Организация модулей и моделей на Zend Framework 2
У меня есть несколько вопросов о структуре модулей и моделей ZF.
(Я говорю о ZF 2, потому что я отказался от ZF 1.11)
Чтобы сделать мой вопрос простым для понимания, посмотрите на следующий пример: (я создаю это просто для изучения ZF2)
Это "приложение для управления фильмами". В этом приложении у меня есть 3 вида пользователей:
- visitors: peolple who olny can see the movies in the database.
- members: same as visitors plus insert, update and delete movies.
- administrator: same as members plus insert, update and delete users and other informations as genre, artist, ...
Участники не могут вставить ничего, кроме нового фильма, то есть они не могут вставить новый жанр, ни нового исполнителя.
хорошо... для этой проблемы я нашел это решение:
- create 3 modules: visitor, member, admin;
но я не уверен, что это лучший способ организовать программу...
Я понимаю, что ZF ожидает, что люди организуют приложение таким образом:
- create modules for each funcionallity;
- create roles for each kind of user;
Итак, мои вопросы:
1. My solution is right or wrong?
2. If my solution is right, how can I organize my application?
3. How can I organize my models, to be visible to more than one module?
- I think a should create a model "movie" somewhere if "inserts, updates, deletes, and selects"
then a module "visitor" could only use a "select" while a module "member" could use all the funcionallities. Am I right?
4. If my solution is not right, how can I organize my application?
5. How should be my modules?
Я действительно застрял с этой проблемой. Я не мог найти ответы нигде... Если у кого-то есть небольшое приложение, подобное этому, и вы не против поделиться, я буду рад.
если я не ясно по моим вопросам, пожалуйста, спросите!
Спасибо за помощь.
2 ответа
Здесь мы видим модель базы данных, и поэтому главный вопрос для меня - как управлять данными. В шаблоне MVC вы управляете данными с помощью моделей. Насколько я могу сказать, ваш вопрос не должен быть связан или ограничен ZF2. Как и в более ранних версиях, у вас должны быть модели для управления базой данных и таблицами данных.
Модули будут обрабатывать аспект приложения. Когда у вас есть надежная модель для данных (люди, жанр, пользователи, фильмы), вы можете создать десятки модулей для доступа к моделям. Следовательно, у вас может быть множество модулей для разных целей, но всегда одна и та же модель.
У вас может быть модуль, который обрабатывает только пользовательское управление, один, который управляет только (добавлять / обновлять) фильмы, а другой - только список (читать), фильмы и т. Д.
Я думаю, что вы могли бы сделать большую часть этого в одном модуле ZF2, возможно, под названием "MovieManager". Movie и Person могут быть моделями (т.е. базовыми классами и таблицами базы данных) в пространстве имен модуля MovieManager.
Пользователь может быть отдельным модулем для обработки аутентификации пользователя и контроля доступа. Вы можете взглянуть на работу, которую проделал Эван Коури над многоразовым пользовательским модулем ZF2: https://github.com/Zf-Commons/ZfcUser Или вы могли бы упростить задачу и поместить модель User в модуль MovieManager.,
Я бы использовал Zend_Acl, чтобы определить, какие операции разрешено выполнять данному пользователю. Или вы можете сделать это проще, имея базовое свойство role в классе User и проверяя авторизованные роли в контроллерах MovieManager.