8

我将 git 与子模块一起使用,我很难弄清楚如何组织我的文件。我用 PHP 开发,并使用单元测试。所以现在,我为每个模块使用这个组织:

  • 源/
  • 测试/

这似乎是一个绝妙的主意,但问题是当我对项目执行“git submodule add”时,我将拥有该路径:project/modules/News/src/index.php

src/ 文件夹确实有问题。

我是否应该简单地将所有文件放在模块根目录中,并在源代码中混合一个测试/文件夹?对我来说这听起来很糟糕。你在做什么 ?

编辑:由于自动加载, src/ 文件夹有问题。我不应该在我所有的班级名称中加上“src”......

4

3 回答 3

4

只要自动加载器能以某种方式找到您的文件,您的文件夹布局就几乎无关紧要。如果您使用 PEAR 约定将类名映射到它们的源文件,则可以将 src 目录添加到包含路径或堆叠第二个自动加载器。然后您不必将 src 添加到类名中。

PEAR 约定的替代方案是在文件和类之间使用静态映射。GitHub 上有一个工具可以为你自动生成这样的自动加载器

静态自动加载器方法也用于PHP 项目向导。该工具将创建 src 和 tests 文件夹,包括您的 phpunit 配置构建文件,以将您的项目与 Jenkins CI 连接起来。这是一个方便的包裹。

至于包含子模块,请考虑将它们放入 lib 或 ext 文件夹中。可以在 GitHub 的 phpdox 项目中找到有关外观的示例。确保您还查看了主引导文件以了解如何包含各种自动加载器。

于 2011-03-29T07:09:18.770 回答
3

遇到这个问题时我所做的是创建一个名为 vendor 的文件夹并将所有子模块放入其中。然后我使用相对路径将目录符号链接到我想要它们在我的代码中的位置。您可以将符号链接提交到 git,当其他人拉取存储库时它们仍然可以工作。当然,这仅在您使用基于 *nix 的操作系统时才有效。

例如:

modules/
vendor/module1/src/

可以像这样进行符号链接(来自模块目录):

ln -s ../vendor/module1/src module1

不确定这是否解决了您的问题。

于 2011-03-28T16:01:29.460 回答
0

我不会在单独的模块中进行测试。将其保存在同一个存储库中。

于 2011-03-29T05:43:52.423 回答