2010-04-16 2 views
1

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

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

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

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

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

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

ответ

1

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

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

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

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

Смежные вопросы