Codeigniter hmvc、模块分离、模块扩展、概念澄清

Codeigniter hmvc、模块分离、模块扩展、概念澄清,codeigniter,module,hmvc,Codeigniter,Module,Hmvc,我已经阅读了很长一段时间关于codeigniter的模块,并决定深入研究它。我已经了解了基本概念,每个模块都是一个独立的“MVC”,因此易于维护、添加等,但需要一些帮助来理解正确的实现 首先,我想特别解释一下原来模块化扩展hmvc站点中的线路 “若仅使用模块化分离,而不使用HMVC,控制器将扩展CodeIgniter控制器类。” 这究竟是什么意思?如果有人能解释它的意义和目的,那将非常有帮助 此外,对HMVC、模块化扩展和分离等进行更多的概念性解释也很好。比如如何决定何时扩展模块,将它们分开,以

我已经阅读了很长一段时间关于codeigniter的模块,并决定深入研究它。我已经了解了基本概念,每个模块都是一个独立的“MVC”,因此易于维护、添加等,但需要一些帮助来理解正确的实现

首先,我想特别解释一下原来模块化扩展hmvc站点中的线路

“若仅使用模块化分离,而不使用HMVC,控制器将扩展CodeIgniter控制器类。”

这究竟是什么意思?如果有人能解释它的意义和目的,那将非常有帮助

此外,对HMVC、模块化扩展和分离等进行更多的概念性解释也很好。比如如何决定何时扩展模块,将它们分开,以及这意味着什么

要使用HMVC功能,如
Modules::run()
,控制器必须 扩展MX_控制器类

若仅使用模块分离,而不使用HMVC,则控制器将扩展 CodeIgniter控制器类

这意味着,如果您希望控制器能够利用可以从应用程序中的任何位置(包括其他模块)调用的
Modules::run()
,则需要让该控制器扩展MX_控制器类,如下所示:

class Foobar extends MX_Controller {}
MX_控制器
是模块化扩展包的基本控制器。您还可以选择扩展自身扩展的任何其他控制器,例如:

// Base controller
class Module_Controller extends MX_Controller {}

// Actual controller
class Blog extends Module_Controller {}
Modules::run()
设计用于返回视图部分

如果您不需要此功能(您可能不需要),则不需要在模块的控制器中执行任何不同的操作:

class Foobar extends CI_Controller {}
class Foobar extends MY_Controller {} // etc.
在此上下文中的“模块”只是小型CI应用程序,每个应用程序都有自己的模型、视图、控制器等。它有助于保持代码的组织,并使您能够分离不相关的组件。理论上,任何CI应用程序都可以成为模块,反之亦然