Model view controller 代码点火器-模块化?

Model view controller 代码点火器-模块化?,model-view-controller,codeigniter,architecture,codeigniter-2,hmvc,Model View Controller,Codeigniter,Architecture,Codeigniter 2,Hmvc,我正在建立几个需要类似“模块”的网站。例如,这些网站可能有完全相同的登录系统、论坛等 有没有一种方法可以让我一次性构建这些模块,然后将它们“放到”这些不同的站点上?我看到的一些挑战: 在各个站点中保持代码的一致性。对模块所做的任何更改都应传播到使用该模块的所有站点。我想我需要一个升级的方法 数据库:这些功能需要作为更大应用程序的一部分工作。可能模块需要定义与各自站点中其他表的关系 我肯定还有更多的问题。我想我应该看看这个:,但我没有这方面的经验 因此,我正在寻找这个想法的解决方案、建议或更多

我正在建立几个需要类似“模块”的网站。例如,这些网站可能有完全相同的登录系统、论坛等

有没有一种方法可以让我一次性构建这些模块,然后将它们“放到”这些不同的站点上?我看到的一些挑战:

  • 在各个站点中保持代码的一致性。对模块所做的任何更改都应传播到使用该模块的所有站点。我想我需要一个升级的方法
  • 数据库:这些功能需要作为更大应用程序的一部分工作。可能模块需要定义与各自站点中其他表的关系
我肯定还有更多的问题。我想我应该看看这个:,但我没有这方面的经验


因此,我正在寻找这个想法的解决方案、建议或更多问题。

我会将它们作为库编写,并使用Git子模块来管理每个模块。菲尔·斯特金实际上刚刚写了一篇很棒的文章


如果您不使用版本控制,我看不到一种简单的方法可以跨所有应用程序进行同步。是的,HMVC允许您将应用程序拆分为实际的模块,但它无助于在应用程序之间同步这些模块。

您可以通过将第三方软件包添加到第三方文件夹(这是CI 2的新功能)来创建和使用第三方软件包。文档中没有太多关于它的内容,但我找到了这个

您可以在自动加载文件中自动加载第三方软件包。包可以有自己的控制器、模型、视图等


有趣的是,菲尔·斯特金写了一点(http://philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules)关于软件包不是模块(严格意义上的术语),但您可能需要使用第三方软件包。

我的问题是关于“

你可能会觉得有用

我对Drupal有点熟悉,作为一个模块化应用程序,我认为它可以作为如何定义模块之间关系的好例子

这里有一个关于


我想听听您是否遇到了一些关于CI中模块化设计的具体挑战、解决方案和参考资料。

我使用SVN,但正在研究Mercurial。不过,我仍然不确定如何只更新项目的一部分。尼克,我的问题是,我知道我计划构建的这些模块的DB部分需要与其他模块建立关系。也就是说,模块之间存在某种耦合。如何处理?如果您自动加载第三方模块,您应该能够在不同的模块控制器中使用这些模型。这就是你的意思吗?我不认为每个软件包中都包含控制器,但我知道在某个地方包含了一个黑客程序(控制器)