Я начинаю изучать преимущества внедрения зависимостей ZF2 и немного запутался в том, как создать новый экземпляр модели внутри контроллера.
Я знаю, что могу использовать: $ this-> getServiceLocator () -> get ('Crumb'), но я читал, что считается использование анти-паттерна для использования serviceLocator в контроллере.
Чтобы воплотить эту проблему в жизнь: у меня есть класс Хлебные крошки и класс Крошка.Это выглядит примерно так:
class Breadcrumbs
{
private $crumbs = array();
public function getCrumbs(){
return $this->crumbs;
}
public function addCrumb(Crumb $crumb){
$this->crumbs[] = $crumb;
}
}
class Crumb
{
private $title;
private $url;
public function setTitle($title){
$this->title = $name;
}
}
class DetailController extends AbstractActionController
{
private $breadcrumbs;
public function __construct(Breadcrumbs $breadcrumbs){
$this->breadcrumbs = $breadcrumbs;
}
public function indexAction(){
$crumb = new Crumb(); //Option 1
$crumb = $this->getServiceLocator()->get('Crumb'); //Option 2
$crumb = ?? //Option 3 ??
$this->breadcrumbs->addCrumb($crumb);
}
}
Я запутался, как создать экземпляр Crumb.Если я буду следовать варианту 1, я не смогу использовать фабрику для добавления каких-либо зависимостей в Crumb.Если я следую варианту 2, я использую serviceLocator, который является анти-паттерном.
Я что-то упускаю из виду?