我已经开始了一个新项目,我使用Composer来处理一些依赖项,以及它们的自动加载。
我只将 composer.json 文件保存在 VCS 中,而不是整个供应商目录,所以我不想开始在其中添加我的代码。
我应该如何处理我自己的项目特定代码,以便它也自动加载?
我已经开始了一个新项目,我使用Composer来处理一些依赖项,以及它们的自动加载。
我只将 composer.json 文件保存在 VCS 中,而不是整个供应商目录,所以我不想开始在其中添加我的代码。
我应该如何处理我自己的项目特定代码,以便它也自动加载?
这实际上非常简单。从存储库中排除供应商目录是正确的方法。您的代码应存储在单独的位置(如 src)。
使用autoload属性使作曲家识别您的命名空间:
{
"autoload": {
"psr-4": {
"Acme\\": "src/"
}
}
}
假设您有遵循 psr-4 标准的类名,它应该可以工作。下面是一些类名及其在文件系统上的位置的示例:
请记住为每个类定义一个命名空间。这是 Acme\Command\HelloCommand 的示例:
<?php
namespace Acme\Command;
class HelloCommand
{
}
不要忘记在你的 PHP 控制器中包含自动加载器:
<?php
require 'vendor/autoload.php';
在 PHP Framework Interoperability Group 上阅读有关PSR-4 标准的更多信息。
请注意,如果您编辑composer.json
,则需要运行 install、update 或dump-autoload以刷新自动加载器类路径。