0

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

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

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

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

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

回答

0

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

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

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

有趣的是,菲尔鲟鱼写了一些关于软件包没有被记录(http://philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules)模块(严格意义上来说),但您可能可以使用第三方软件包来满足您的需求。

+0

尼克,我的问题是,我知道我打算构建的这些模块的数据库部分需要与其他模块有关系。意思是,模块之间有一种耦合。如何处理? – StackOverflowNewbie

+0

如果您自动加载您的第三方模块,您应该能够在不同的模块控制器中使用这些模型。你是这个意思吗? –

+0

我不认为它们在每个软件包中都包含了控制器,但我确实知道有一个地方可以包含它(控制器) – AceMark

0

我会将它们编写为库并使用Gi​​t子模块来管理每个模块。菲尔鲟鱼实际上只写了一个伟大的post about doing this in CodeIgniter

如果您没有使用版本控制,我看不到在所有应用程序之间同步的简单方法。是的,HMVC会让你将应用程序分解成实际的模块,但它不会帮助你在应用程序中同步这些模块。

+0

我使用SVN,但看着Mercurial。不过,我仍然不确定我是如何更新项目的一部分的。 – StackOverflowNewbie

0

这里是我的关于“Database communication in modular software

,你会发现有用的问题。

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

这里是关于art-of-separation-of-concerns

一个很好的文章中,我想听听,如果你遇到了关于CI模块化设计一些具体的挑战,解决方案和参考。