Php 为什么对Codeigniter使用HMVC而不是MVC?

Php 为什么对Codeigniter使用HMVC而不是MVC?,php,codeigniter,codeigniter-hmvc,Php,Codeigniter,Codeigniter Hmvc,我搜索了HMVC,知道它是什么及其优点 模块化:减少应用程序不同部分之间的依赖关系 组织:为每个相关的三元组创建一个文件夹可以减轻工作量 可重用性:根据设计的本质,几乎每一段代码都很容易重用 可扩展性:在不牺牲易维护性的情况下,使应用程序更具可扩展性 但就在没有HMVC的Codeigniter中,可以创建控制器的不同子文件夹、多个模型文件夹和多个视图文件夹。我不理解使用HMVC的确切原因。我认为本地CI不是HMVC,它只是MVC。里面只有“控制器”、“模型”和“视图”,没有“模块” 因此,如果您

我搜索了HMVC,知道它是什么及其优点

模块化:减少应用程序不同部分之间的依赖关系

组织:为每个相关的三元组创建一个文件夹可以减轻工作量

可重用性:根据设计的本质,几乎每一段代码都很容易重用

可扩展性:在不牺牲易维护性的情况下,使应用程序更具可扩展性


但就在没有HMVC的Codeigniter中,可以创建控制器的不同子文件夹、多个模型文件夹和多个视图文件夹。我不理解使用HMVC的确切原因。

我认为本地CI不是HMVC,它只是MVC。里面只有“控制器”、“模型”和“视图”,没有“模块”

因此,如果您不需要HMVC的好处,那么不要担心CI为什么是HMVC

顺便说一下,如果您确实需要HMVC模式以及模块化带来的好处,您可以使用以下扩展:

我在中找到了

当您需要在视图中加载视图及其数据时,这非常有用。考虑将购物车添加到页面。购物车需要自己的控制器,它可以调用模型来获取购物车数据。然后,控制器需要将数据加载到视图中。因此,可以直接在页面中加载购物车MVC,而不是处理页面和购物车的主控制器

主控制器不需要知道它,并且与它完全隔离。 在CI中,每个请求不能调用超过1个控制器。因此,要实现HMVC,必须对控制器进行仿真。它可以通过库来实现,也可以通过“模块化扩展HMVC”的贡献来实现

使用库和“模块化HMVC”HMVC类的区别在于:

  • 不需要在HMVC类中获取和使用CI实例
  • HMVC类存储在模块目录中,而不是库目录

  • HMVC不仅仅是文件夹。例如,在HMVC中,一个codeigniter控制器可以调用另一个codeigniter控制器,在本机CIV中真正不能做的事情是什么?您总是可以制作一个API来做这些事情吗@Patrick如果您愿意,您将重新创建hmvc扩展,因为加载程序类必须进行扩展,就像在hmvc中一样