0

我正在使用主机上的共享目录的 VM 中运行开发环境。出于多种原因,我将几个包移到了项目供应商目录之外,并将它们放在操作系统的根目录下。这样当我有多个使用相同依赖项运行的项目时,我可以更新依赖项中的源代码,而不必每次都提交和运行作曲家更新。

在我的composer.json中,我的一个项目有以下内容......

"autoload": {
    "psr-0": {
        "Product\\Common\\": "/srv/deps/php-common/src/"
    }
}

如您所见,我正在尝试从/srv/deps/php-common/src/. 这个目录可以从 apache 很好地访问,我已经尝试手动包含一个文件(也可以正常工作)。然而,作曲家拒绝在那里学习任何课程。

尝试实例化Product\Common\Sample将导致 PHP 抱怨该类不存在。

我在这里做一些公然错误的事情吗?

4

1 回答 1

0

我在这里做一些公然错误的事情吗?

您可能自己猜到了,答案是“是”。

Composer 的主要功能是将库添加到您需要的版本中,包括下载,在您不需要注意的位置(除了必须将这些文件复制到生产机器之外)。

如果您维护一个库的中心位置,您如何确保它们处于您的应用程序所需的正确版本中?

此外,如果您使用绝对路径添加自动加载,则该应用程序现在依赖于该确切的目录结构,必须在应安装的任何地方复制该目录结构。虽然我确实理解它看起来更方便开发时间只需要关心一个中央副本,但它对于生产或让新开发人员准备好在该项目上工作并不是很方便。

您是否考虑过通过使用 Phing 或 Ant 脚本获得一些帮助来增加开发的便利性?我爱他们。我用 Git 签出一个分支,然后phing test在主目录中运行以启动测试套件。第一步是运行composer install,它获取正确的版本。

或者,我可以phing composer只运行安装,但通常我对运行测试感兴趣。我切换到一个分支,更改一些代码并运行测试。我不能忘记安装正确的库版本,它是自动完成的。

或者我想更新到最新版本。这是一个手动步骤,之后还需要运行测试,但成功后新的依赖项将被提交composer.jsoncomposer.lock在其他任何地方复制。

真正有帮助的一件事是在 Github 或 Bitbucket 上托管库,使其能够下载 ZIP 文件而不是克隆存储库 - 或者运行 Satis 的本地实例来生成这些 ZIP 文件。它使安装版本非常快。

但要回答您关于自动加载的问题:查看vendor/composer. 他们看起来应该工作吗?机器是否看到路径,那里的文件?

于 2013-10-31T13:47:03.240 回答