Предыстория:
У меня возникли проблемы с пониманием того, как лучше всего использовать контроллеры в архитектуре MVC.
У меня есть веб-приложение, которое следует этой схеме URL:
/
- основной индекс/static-page
- статические страницы/categories
- индекс для определенных категорий/categories/users
- индекс для пользователей определенных категорий/categories/users/id#/user-name
- конкретный пользователь для определенных категорий/categories/event-type-A
указатель событий, относящихся к определенным категориям/categories/event-type-A/id#/event-name
- конкретное событие для определенных категорий/categories/event-type-B
указатель событий, относящихся к определенным категориям/categories/event-type-B/id#/event-name
- конкретное событие для определенных категорий
*Примечание. Эта структура URL-адреса аналогична структуре StackOverflow в том смысле, что неправильно сформированные URL-адреса (неправильные event-name
s) автоматически исправляются, если существует id#
.
Вопрос:
Поскольку categories
, users
и event-type
имеют уникальные функции, связанные с ними (например, редактирование пользователей, управление событиями и т. д.), все они являются собственными контроллерами (правильно?). А поскольку event-type-A
и event-type-B
очень похожи, они имеют общую функциональность, расширенную от класса events
.
Как вы предлагаете мне организовать свои контроллеры таким образом, чтобы они следовали «стандартной практике» в дизайне ООП и MVC?
В настоящее время у меня есть класс Pages
для моих статических страниц, и я ожидал, что будет класс categories
, который вызывает класс users
, классы event-type-A
и event-type-B
, которые (как описано выше) являются расширениями класса events
... но отсюда я м не знаю, как лучше поступить.
Мы будем очень признательны за любые примеры простого/псевдокода.
Дополнительная информация:
К вашему сведению: я использую PHP/MySQL. Я пытался изучить MVC, написав свой собственный фреймворк, но недавно переключился на CodeIgniter. При этом будет достаточно либо специального решения CodeIgniter, либо общего решения MVC.
Обновление:
Как указано ниже Ako a>, я определенно мог бы объединить events
в один контроллер, а затем создать из него два type
. Я просто не понимаю, как я на самом деле настроил каждый из контроллеров (какие методы определить и т. д.), чтобы заставить их работать вместе правильно.