背景:
我在理解如何在 MVC 架构中最好地使用控制器时遇到了一些麻烦。
我有一个遵循此 URL 方案的 webapp:
/
- 主要指标/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 的,event-name
如果存在格式错误的 URL(错误的 s)会自动更正id#
。
问题:
由于categories
、users
和event-type
s 每个都有与之相关的独特功能(即编辑用户、操作事件等),它们都是自己的控制器(对吗?)。由于event-type-A
和event-type-B
非常相似,它们共享从一个events
类扩展的通用功能。
您如何建议我组织我的控制器,使其遵循 OOP 和 MVC 设计中的“标准实践”?
我目前有一个Pages
用于我的静态页面的类,并且我期望有一个categories
类调用一个users
类,event-type-A
并且event-type-B
类(如上所述)是一个events
类的扩展......但是从这里我不确定如何最好继续。
任何简单/伪代码示例将不胜感激。
附加信息:
仅供参考:我正在使用 PHP/MySQL。我一直在尝试通过编写自己的框架来学习 MVC,但最近切换到了 CodeIgniter。话虽如此,CodeIgniter 特定的解决方案或通用的 MVC 解决方案就足够了。
更新:
正如下面Ako 提到的,我绝对可以将它们events
组合成一个控制器,然后从中type
生成两个。我只是对如何实际设置每个控制器(定义哪些方法等)以使它们正常工作感到困惑。