Php 筑巢还是不筑巢?MVC控制器(CodeIgniter)

Php 筑巢还是不筑巢?MVC控制器(CodeIgniter),php,codeigniter,hierarchical,codeigniter-routing,Php,Codeigniter,Hierarchical,Codeigniter Routing,背景: 我在理解如何在MVC架构中最好地使用控制器时遇到了一些困难 我有一个遵循此URL方案的Web应用程序: /-主索引 /静态页面-静态页面 /categories-特定类别的索引 /categories/users-特定类别用户的索引 /categories/users/id#/user name-特定类别的特定用户 /categories/event-type-A与特定类别相关的事件索引 /categories/event-type-A/id#/event name-特定类别的特定事件

背景:

我在理解如何在MVC架构中最好地使用控制器时遇到了一些困难

我有一个遵循此URL方案的Web应用程序:

  • /
    -主索引
  • /静态页面
    -静态页面
  • /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,因为如果存在
id#
,则会自动更正格式错误的URL(错误的
事件名称
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解决方案就足够了

更新:


同样,我可以将
事件
组合到一个控制器中,然后从中生成两个
类型
s。我只是对如何实际设置每个控制器(定义哪些方法等)以使它们正常工作感到困惑。

/categories/event-type-A
/categories/event-type-B
更改为
/categories/events/type
怎么样?如果
类型
可以是
A
B
(或类似的东西)

它似乎提供了一个令人满意的解决方案

实质上:

需要时,使用HMVC加载必要的MVC三元组


我以前从未听说过
HMVC
,但显然它允许我指定何时调用某些MVC三元组,这将最终使我能够控制何时调用不同的控制器。这将允许每个部分(
类别
事件
类型
,等等)作为独立的模块,它们有自己的
索引
页面,可以调用,但也可以根据需要提供更详细的数据。

简单首选项。
event-type-A
event-type-B
的大部分代码都可以重用,但不是全部。因此,我不希望它们被列为
事件
的子项,我希望它们是分开的(主要用于搜索引擎优化目的)。不过,谢谢你的建议。。。。除非有一种简单的方法可以使用您的方法实现这一点,同时从路径中隐藏
事件
目录。假设我按照您的建议创建与scheme
/categories/events/type/id\event name
匹配的控制器,我将如何定义我的控制器来实现这一点?我想您有用于
类别
事件
类型
的控制器,但是,正如问题中所述,我不知道如何正确设置使其工作的方法。你能指导我完成这个过程吗?