CodeIgniter - 模块化?

时间:2011-09-26 22:23:58

标签: model-view-controller codeigniter architecture codeigniter-2 hmvc

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

有没有办法可以构建这些模块一次,只是将它们“丢弃”在这些不同的网站中?我看到的一些挑战:

  • 保持代码在各个站点中保持一致。对模块所做的任何更改都应传播到使用该模块的所有站点。我想我需要一种升级方法吗?
  • 数据库:这些功能需要作为更大应用程序的一部分。也许模块需要在其各自的站点中定义与其他表的关系。

我确信还有更多问题。我想我应该看看这个:https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home,但我对此没有任何经验。

所以,我正在为这个想法寻找解决方案,建议或更多问题。

3 个答案:

答案 0 :(得分:0)

我会将它们编写为库并使用Gi​​t子模块来管理每个模块。 Phil Sturgeon实际上刚刚写了一篇很棒的post about doing this in CodeIgniter

如果您没有使用版本控制,我看不到在所有应用程序中同步的简便方法。是的,HMVC将允许您将应用程序拆分为实际模块,但它无助于在您的应用程序中同步这些模块。

答案 1 :(得分:0)

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

http://codeigniter.com/user_guide/libraries/loader.html

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

有趣的是,Phil Sturgeon写了一些关于软件包不是模块的文章(http://philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules),但严格意义上讲,可能会使用第三方软件包来满足您的需求。

答案 2 :(得分:0)

以下是关于“Database communication in modular software

的问题

您可能觉得有用。

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

以下是关于art-of-separation-of-concerns

的一篇好文章

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