Правильно ли я использую класс? Парни, тренируюсь в написание простых классов. Недавно была задача написать генератор отчетов. Вот я и сделал. Посмотрите пожалуйста. Класс сильно сокращен, чтобы была понятна только суть.
1. "Круто" ли он написан и нет ли в нем ошибок?)
2. Что еще с ним можно сделать, чтоб дальше вникнуть в ООП?class Otchet
{
private $name;
private $boss;
private $directors = array();
public function __construct($name)
{
$this->name = $name;
}

public function setBoss($name)
{
$this->boss = $name;
}

public function replaceBoss($name)
{
if(!empty($boss))
{
$this->boss = $boss;
}
}
public function addDirector($name)
{
$this->directors[] = $name;

$this->directors = array_unique($this->directors);
}
public function delDirector($name)
{
if(($key = array_search($name, $this->directors)) !== false)
{
unset($this->directors[$key]);
}
}

private function generate_otchet_name()
{
return date('Y-m-d-H-i').'.txt';
}

public function save($filename = '')
{
if(empty($filename))
{
$filename = $this->generate_otchet_name();
}

$content = "Название отчета: ".$this->name."\n";
$content .= "Директор: ".$this->boss."\n";
if(count($this->directors) > 0)
{
$content .= "Зам директора: ".implode(', ', $this->directors);
}

if(file_put_contents($filename, $content))
{
return 'Отчет сохранен';
}
else
{
return 'Ошибка сохранения';
}
}
}
if(isset($_POST['name'], $_POST['boss'], $_POST['director']))
{
$f = new Otchet($_POST['name']);
$f->setBoss($_POST['boss']);

if(is_array($_POST['director']) && count($_POST['director']) > 0)
{
foreach($_POST['director'] as $v)
{
$f->addDirector($v);
}
}

echo $f->save();
}

21 Авг 2019 в 07:02
154 +1
0
Ответы
1

Класс написан хорошо и у вас нет критических ошибок. Однако, обратите внимание на следующее:

В методе replaceBoss() должно быть $this->boss вместо $boss.Можно сделать методы getBoss() и getDirectors() для получения данных о боссе и директорах отчета соответственно.Можно добавить методы для проверки существования конкретного директора и метод для очистки списка директоров.

Для более глубокого изучения ООП, вы можете попробовать сделать следующее:

Создать наследуемый класс отчетов для различных типов отчетов.Использовать интерфейсы для обеспечения согласованности и унификации методов ваших классов.Попробовать добавить статические методы или свойства для удобного доступа к методам класса без создания экземпляра.Разработать обработку ошибок в вашем классе, чтобы улучшить обработку исключений и уведомлении об ошибках.Изучить принципы SOLID и применить их в вашем коде.

В целом, ваш класс является хорошим примером применения ООП в PHP. Продолжайте тренироваться и экспериментировать с новыми концепциями ООП для улучшения вашего навыка программирования.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 424 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир