Ссылаясь на этот комментарий,
Когда класс имеет очень длинный список аргументов, это может быть "запахом кода", что ваш класс пытается сделать слишком много и, возможно, не следует принципу единой ответственности. Если ваш класс пытается сделать слишком много, рассмотрите возможность реорганизации вашего кода в несколько меньших классов, которые потребляют друг друга.
Что мне делать с этим классом контроллера ниже — он «пытается сделать слишком много»?
class Controller
{
public $template;
public $translation;
public $auth;
public $article;
public $nav;
public function __construct(Database $connection, $template)
{
$this->template = $template;
$this->translation = new Translator($connection);
$this->nav = new Nav($connection);
$this->article = new Article($connection);
$this->auth = new Auth($connection);
}
public function getHtml()
{
if(isset($_REQUEST['url']))
{
$item = $this->article->getRow(['url' => 'home','is_admin' => $this->auth->is_admin]);
include $this->template->path;
}
}
}
Как я могу разбить его на более мелкие классы - если это контроллер, содержащий эти основные классы, которые мне нужны для вывода страницы?
И что мне сделать, чтобы он следовал принципу зависимости инъекция?
all those instantiations
уродливы в моем контроллере, как я могу сделать их отдельными сеттерами, чтобы я мог вызывать их в своем классе контроллера? - person laukok   schedule 01.08.2014parameters either to the constructor
, тоa class has a very long list of arguments, it can be a "code smell" that your class is trying to do too much and possibly not following the single responsibility principle.
не будет? - person laukok   schedule 01.08.2014$connection
не требуется отдельно, я мог бы использовать сеттеры для внедрения всех этих классов и просто иметь$template
в конструкторе. - person halfer   schedule 01.08.2014