Модуль - это набор логически связанных функций (например, галерея). Для простоты вы должны хранить весь связанный код для модуля в его каталоге (это также включает любые задачи администратора). В вашем adminModule у вас есть код нескольких других модулей, что затрудняет повторное использование обоих модулей, поскольку все они зависят от AdminModule, а AdminModule зависит от всех других модулей. Это полностью нарушает идею модулей. Если это помогает понять, вы можете видеть контроллеры как подмодули (я знаю, что это неправильно, но, возможно, это облегчает понимание).
Итак, сначала вы могли бы сделать что-то вроде этого:
- Модуль Галерея
- ImageController (viewAction, browseAction, ...)
- AdminController (editImage, uploadImage, ...)
- ...
- Пользовательский модуль
- SettingsController
- AdminController
- ...
Но снова вы разделяете код для одной сущности на разные контроллеры. Как и в ImageController, вы управляете просмотром изображений, но редактирование и загрузка выполняется в AdminController.
Итак (по крайней мере, так я это делаю):
- Модуль Галерея
- ImageController (viewAction, addAction, editAction, deleteAction, ...)
- GalleryContoller (viewAction, addAction, editAction, deleteAction, ...)
- ....
Это объединяет все вещи, которые логически принадлежат друг другу. Один контроллер отвечает за все действия для одного объекта (например, ImageController для всех действий, связанных с one image, GalleryController для действий, связанных с галереями). Сюда также входят административные задачи.
Если вы делаете это таким образом, то, вероятно, нет реального AdminModule. Это была бы только какая-то навигация, связанная с административными действиями каждого модуля / контроллера.
Вы уверены, что можете переписать zf для поддержки подмодулей. Это будет включать:
- Добавление маршрута с поддержкой подмодулей (простой)
- Переписать Диспетчер для поддержки подмодулей
- Переписать автозагрузчик для подмодулей
- Добавление нескольких других каталогов в Plugin-Loaders & others
Но это не делается с какой-либо средой mvc, которую я когда-либо видел, поскольку это обычно подразумевает слабость дизайна (опять же, по моему мнению) и общую потерю производительности (чем больше каталогов для поиска автозагрузчика, тем хуже ).