@simonnidze

ZF2 как использовать одинаковый набор функций в разных контроллерах?

Всем привет! Пишу модуль Cats в Zend Framework 2, который будет позволять редактировать и показывать информацию кошках.
В качестве ORM использую Doctrine.

У каждой кошки есть связь id кошки->id отца, id кошки->id матери.
Есть метод для построения родословной:
private function createPedigreeArray($config){}

Есть также два метода
private function getFatherInfo(){}
private function getMotherInfo(){}


Эти методы являются вспомогательными для метода createPedigreeArray
все эти 3 метода прописаны в коде контроллера, используют для формирования массивов
$objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');

и вытягивают данные из разных Entity.
Все работает.

В дальнейшем я бы хотел использовать функцию createPedigreeArray() для формирования родословной в другом контроллере.

Например у меня будет окат(как помет только у кошек), в таблице оката будет указано два идентификатора родителей и я хотел бы пользоваться этой же функцией createPedigreeArray() просто добавив в нее одно условие.

Но формирование родословной оката будет происходить точно в другом контроллере, если не в другом модуле.

Каким способом лучше всего воспользоваться, чтобы в дальнейшем добиться желаемого результата?

Еще интересует, следует ли вообще писать в контроллере свои методы, отличные от action, но которые будут вызываться только в контексте action данного контроллера или их также лучше выносить? Если выносить, то есть ли лучшая практика для этого?

В ZF2 я новичок, активно его изучаю и он мне ооочень нравится.
Листая мануал понял, что можно написать свой controller plugin, который можно будет вызывать из разных контроллеров.

Буду рад любому совету. Заранее спасибо!
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
одинаковый набор функций в разных контроллерах?

выносите это в сервис, регистрируете в контейнере зависимостей, радуетесь.
Ответ написан
Комментировать
felessar
@felessar
Ну тут можно поступить по разному.
Все, что не является action выносите в сервис и подключаете его (как было сказано в предыдущем комментарии) через Dependency Injection.
одинаковый набор функций в разных контроллерах?

Можно, конечно, написать трейт и там определить одинаковый набор функций или же расширить AbstractActionController, но мне кажется, сервис лучше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы