Правильно ли я использую класс? Парни, тренируюсь в написание простых классов. Недавно была задача написать генератор отчетов. Вот я и сделал. Посмотрите пожалуйста. Класс сильно сокращен, чтобы была понятна только суть.
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
168 +1
0
Ответы
1

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

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

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

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

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

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