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

Буду рад любому совету. Заранее спасибо!
  • Вопрос задан
  • 126 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
одинаковый набор функций в разных контроллерах?

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽