@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, который можно будет вызывать из разных контроллеров.

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

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

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

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

Войти через центр авторизации
Похожие вопросы