【问题标题】:PHP project organisationPHP项目组织
【发布时间】:2012-01-31 12:09:53
【问题描述】:

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

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

项目 1 和 2 依赖于库代码。

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

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

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

【问题讨论】:

  • 你用的是哪个单片机软件?符号链接呢?

标签: php coding-style project-management


【解决方案1】:

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

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

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

【讨论】:

  • 这实际上是一个公平的观点。可能是目前最好的解决方案。对于它的价值,我实际上正在使用 Mercurial。强调不想受制于最新版本的库。
  • 有一个关于为此使用 mercurial 的线程。似乎可以使用扩展程序。 stackoverflow.com/questions/217523/…
【解决方案2】:

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

【讨论】:

  • 我主要指的是指向硬盘驱动器上的固定位置。人们在 PHP 中的常见反应。
  • 是的,我正在处理 C# 中的常见反射:P 我们在继承的 C# 中使用 svn 外部,但我很想改变它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 2012-10-21
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多