【问题标题】:CodeIgniter - modular?CodeIgniter - 模块化?
【发布时间】:2011-11-25 14:23:36
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我使用 SVN,但正在研究 Mercurial。不过,我仍然不确定如何只更新项目的一部分。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 尼克,我的问题是我知道我计划构建的这些模块的数据库部分需要与其他模块建立关系。意思是,模块之间存在一种耦合。如何处理?
    • 如果您自动加载第三方模块,您应该能够在不同的模块控制器中使用模型。是这个意思吗?
    • 我不认为它们在每个包中都包含控制器,但我知道在某处包含它(控制器)
    【解决方案3】:

    这是我关于“Database communication in modular software”的问题

    你可能会觉得有用。

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

    这是一篇关于art-of-separation-of-concerns的好帖子

    我想知道您是否遇到过关于 CI 模块化设计的具体挑战、解决方案和参考资料。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多