PHP项目组织

时间:2012-01-31 12:09:54

标签: php coding-style project-management

目前我只有一堆php文件位于源代码管理下的文件夹中。 从逻辑上讲,我有一组相关项目和一个共享数据库。

  • 项目1是与数据库交互的Web应用程序。
  • 项目2是一些后台进程,它们也与同一个数据库进行交互。
  • 项目3是一个包含扩展数据库连接对象和其他实用程序功能的库。

项目1和2取决于库代码。

我想将项目拆分为三个独立的存储库,以便可以独立开发。

组织前两个项目的最佳方法是什么,以便它们依赖于库,但在源代码树中不需要自己的库副本?

我应该将库转换为PEAR包并在系统范围内安装该包。 或者项目1和2在某种意义上是“构建/部署”并且在构建步骤中包含库的副本更好。这种方法意味着使用某种构建管理工具,如Phing / PHP-Maven。

2 个答案:

答案 0 :(得分:3)

在源代码树中保留代码副本并不是件坏事。它允许您控制何时完成升级阶段,而不是让系统将其强制应用于您的应用程序。当您需要发布代码并且之前发生库更改时,这是一个非常糟糕的情况,迫使您对必须上线的软件进行最后一分钟的更改。

如果您使用的是subversion,则可以使用externals将库代码包含到您的应用程序中,并将其锁定在某个修订版本中。更新它只是编辑属性以更改版本号并更新代码。

其他版本控制工具可以提供类似的功能。像Symfony2这样的项目还包括一个管理依赖项的脚本,但它们只支持git。

答案 1 :(得分:1)

也许是因为我是一个maven用户,我宁愿将project3声明为project1和project2的依赖项,并使用maven作为构建管理工具和依赖项解析器(以及其他内容)。 @ Louis-Philippe Huberdeau指出的版本问题可以避免使用版本并声明依赖项是特定于版本的:即,对于开发项目可以依赖于project3-1.0-SNAPSHOT,并且对于发布,依赖项将变为project3-1.0-RELEASE 。这样三个项目就可以独立发展。工件的版本控制和部署可以由maven完成。稍后,如果需要,可以使用CI服务器,如hudson或Travis CI。