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