跨Web项目共享库

时间:2012-10-26 00:27:39

标签: php linux codeigniter sync file-transfer

我有3个PHP项目使用CodeIgniter框架,它共享一些完全相同的文件,如模型库和控制器。我可以分享这些文件的最佳方式是什么,而不必保持同步并更新相同的文件?

  • 在linux中,我想过使用动态链接并将这些文件提取到一个中心位置,但这会破坏我们的版本控制并导致可移植性问题。
  • 另一种可能在项目中对这些文件使用unison的方法

我认为这是一个常见的问题,常见的方法是什么?

4 个答案:

答案 0 :(得分:3)

将它们分成一个模块,并使用像composer这样的东西。

http://getcomposer.org/

或者只是将它们放在单独的SCM中。

答案 1 :(得分:3)

你可以做的一件事:

将所有共享代码放在库,帮助程序和模型中,并将其放在单独的文件夹中。然后使用:

$this->load->add_package_path('shared location');

另请参阅此处:http://codeigniter.com/user_guide/libraries/loader.html,在应用程序包下。

这适用于大多数内容,除了控制器。

答案 2 :(得分:2)

使用版本控制!在svn中你可以使用外部,git有子模块或子树。

你不想使用硬链接,你会遇到一些奇怪的问题,例如更新一个项目影响另一个项目(“我几周没有碰过”)。

代码可以位于两个物理位置,但在版本控制下共享。始终只有一个授权副本,即版本系统中的副本。所有物理副本都是衍生物。重要的是,当您更新特定项目的代码时,您可以控制,因此如果您犯了错误,一次更改不会立即破坏另一个项目。 如果您想要捕获这些类型的错误,请设置一个合适的回归测试环境。

与其他开发者共享开发环境也是一个很大的没有。您不希望等到您的同事修复了破坏整个程序的解析错误。每个开发人员都应该拥有自己的项目副本(checkout!),同样每个项目都应该拥有自己的共享代码副本(外部)。

答案 3 :(得分:0)

将它们分隔到项目外的文件夹中,然后在项目中配置或包含它们。

通常我们会为项目重写“自动加载器”方法,以便在新文件夹中查找文件。