Zend Framework Application: зависимости модуля - PullRequest
1 голос
/ 17 апреля 2010

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

например. У меня есть Модуль рассылки , который позволяет пользователям подписываться, предоставляя электронную почту адрес.

Далее я планирую добавить Модуль блога , который позволяет подписываться на сообщения по электронной почте (очевидно, дублирует некоторые функции новостной рассылки, но адреса электронной почты хранятся в модели пользователя) , Следующим является модуль Forum , с той же подпиской на функциональность сообщений.

Но я хочу иметь возможность использовать эти модули независимо друг от друга, т.е. приложение только с новостной рассылкой, новостная рассылка с блогом, объединение двух или трех модулей одновременно.

Это довольно часто, например, та же история с функцией поиска. я хочу иметь модуль поиска, с возможностью поиска по всем данным, данным блога или форума, если имеется.

Есть ли для этого шаблон проектирования?
Должен ли я добавить moduleExists($moduleMame), или предоставить какой-то интерфейс или абстрактные классы, какой-то базовый шаблон контроллера, похожий для каждого модуля?

1 Ответ

1 голос
/ 18 апреля 2010

Я бы, вероятно, использовал бы какой-нибудь шаблон контейнера ввода зависимостей для регистрации ваших модулей в контейнере при инициализации приложения. Затем вы можете загрузить модели и убедиться, что они имеют все соответствующие зависимости.

Для функции подписки я бы создал общую модель подписки в более абстрактной библиотеке, которая может использоваться каждым модулем через общий API, где это необходимо.

В случае, если функция поиска знает, какие другие модули искать: Когда вы загружаете модель поиска через контейнер, контейнер может сообщить поисковой модели зарегистрированных модулей для поиска.

Может быть проще взломать его и сохранить зарегистрированные модули в реестре для доступа к общим модулям, таким как поиск, но использование контейнера DI окажется хорошим шаблоном для решения многих подобных проблем.

...