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

时间:2012-09-03 11:57:51

标签: php composer-php

我已经开始了一个新项目,我使用Composer来处理一些依赖项,以及它们的自动加载。

我只将composer.json文件保存在VCS中,而不是整个供应商目录中,所以我不想开始在那里添加我的代码。

我应该如何处理我自己的项目特定代码,以便自动加载?

1 个答案:

答案 0 :(得分:45)

这实际上非常简单。从存储库中排除供应商目录是正确的方法。您的代码应存储在一个单独的位置(如src)。

使用autoload属性使该作曲家识别您的命名空间:

{
    "autoload": {
        "psr-4": {
            "Acme\\": "src/"
        }
    }
}

假设您的类名遵循psr-4标准,它应该有效。下面是一些类名称及其在文件系统中的位置示例:

  • Acme \ Command \ HelloCommand - > SRC /命令/ HelloCommand.php
  • Acme \ Form \ Type \ EmployeeType - > SRC /形式/类型/ EmployeeType.php

请记住为每个类定义命名空间。这是Acme \ Command \ HelloCommand的一个例子:

<?php

namespace Acme\Command;

class HelloCommand
{
}

不要忘记将自动加载器包含在PHP控制器中:

<?php

require 'vendor/autoload.php';

详细了解PSR-4 standard on PHP Framework Interoperability Group

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