Я работаю на небольшом уровне системы управления контентом (CMS), используя Zend Framework и Doctrine. Чтобы объяснить мой вопрос, я создал простую структуру, в которой я строю два модуля (Admin, Frontsite), как вы можете видеть в следующей структуре.
application
- configs
- controllers
- models
- modules
- frontsite
- controllers
-FrontController
-shownewsAction()
...
...
- models
- views
...
...
- admin
- controllers
-NewsController
- models
-news (extends newsbase)
-newsbase
- views
...
...
- views
Модуль администратора обрабатывает все запросы администратора, а модуль frontsite обрабатывает запросы посетителей. Если я создаю модель (т.е. новости) в модуле администратора и разрешаю фронт-контроллеру из модуля frontsite доступ к нему. Тогда мой один модуль станет надежным для другого модуля.
Насколько я знаю, одна из целей модульного подхода состоит в том, чтобы сохранить каждый модуль ненадежным, не полагаясь друг на друга. Один модуль может быть снят без какого-либо влияния на любой модуль в архитектуре. Ну, если это одна из целей модульного подхода, тогда я должен создать ту же модель (новости) в моделях лицевой стороны. Это приведет к избыточности в моем проекте, который определенно не является частью объектно-ориентированного дизайна, потому что он достигнет своей цели повторного использования.
Первый подход. Нужно ли создавать еще один общий модуль, в котором я буду хранить общие модели и позволять другим модулям получать к нему доступ? Означает ли это, что некоторые мои модули будут иметь только архитектуру VC и будут получать доступ к моделям из общего модуля?
Второй подход, о котором я думаю, заключается в создании какого-либо уровня обслуживания, который поможет связать один модуль с другим, разве это не будет снова зависимым друг от друга?
Другим подходом может быть смещение всех распространенных моделей в папку библиотеки. Все модули будут иметь к ним доступ из библиотеки. Таким образом, некоторые из модулей станут модулями VC, но не будут полагаться на другие модули. Таким образом, мы можем способствовать повторному использованию, исключить избыточность и не допускать зависимости модулей друг от друга.
Какова отраслевая практика? Любое экспертное мнение!
Я выполнил поиск в stackoverflow и в Google, чтобы получить ответ. Но никто из них точно не ответил на мой вопрос.
Некоторые поиски
Поиск 1
Поиск 2
Поиск 3
Поиск 4