使用Composer自动加载器进行自定义代码管理


Custom code management with the Composer auto loader?

我开始了一个新项目,在那里我使用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 Acme'Command;
class HelloCommand
{
}

不要忘记在你的PHP控制器中包括自动加载器:

<?php
require 'vendor/autoload.php';

阅读更多关于PHP框架互操作性小组PSR-4标准的信息。

请注意,如果编辑composer.json,则需要运行install、update或dump autoload来刷新自动加载器类路径。