3

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

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

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

4

4 回答 4

3

你可以做的一件事:

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

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

还可以在这里查看: http: //codeigniter.com/user_guide/libraries/loader.html,在应用程序包下。

这适用于大多数东西,除了控制器。

于 2012-10-26T06:56:50.127 回答
3

将它们分成一个模块,并使用类似 composer.

http://getcomposer.org/

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

于 2012-10-26T00:29:53.860 回答
2

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

你不想使用硬链接,你会遇到奇怪的问题,比如更新一个项目会影响另一个项目(“我已经好几个星期没碰过了”)。

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

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

于 2012-10-26T00:31:49.040 回答
0

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

通常我们会为项目重写“autoloader”方法以在我们的新文件夹中查找文件。

于 2012-10-26T00:34:38.373 回答