Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP项目组织_Php_Coding Style_Project Management - Fatal编程技术网

PHP项目组织

PHP项目组织,php,coding-style,project-management,Php,Coding Style,Project Management,目前,我只是有一堆php文件放在源代码管理下的文件夹中。 从逻辑上讲,我有一个相关项目的集合和一个共享数据库 项目1是一个与数据库交互的web应用程序 项目2是一些与同一数据库交互的后台进程 项目3是一个包含扩展数据库连接对象和其他实用程序功能的库 项目1和2取决于库代码 我想将这些项目分成三个独立的存储库,以便它们可以独立开发 组织前两个项目的最佳方法是什么,这样他们就可以依赖于库,但不需要在源代码树中使用自己的库副本 我是否应该将库转换为PEAR包并在系统范围内安装该包。 或者,在某种意

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

  • 项目1是一个与数据库交互的web应用程序
  • 项目2是一些与同一数据库交互的后台进程
  • 项目3是一个包含扩展数据库连接对象和其他实用程序功能的库
项目1和2取决于库代码

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

组织前两个项目的最佳方法是什么,这样他们就可以依赖于库,但不需要在源代码树中使用自己的库副本

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

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

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


其他版本控制工具可以提供类似的功能。有些项目(如Symfony2)还包括一个用于管理依赖项的脚本,但它们只支持git。

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

您使用的是哪种scm软件?符号链接呢?我主要指的是指向硬盘上的固定位置。PHP中的常见反射。是的,我正在处理C#:P中的常见反射。我们在继承的C#中使用svn外部,但我很想改变这一点。事实上,这是一个公平的观点。可能是目前最好的解决方案。值得一提的是,我实际上在使用Mercurial。关于不想受制于任何最新版本的库,这里有一条使用mercurial的线索。好像有个分机。