23

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

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

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

4

1 回答 1

49

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

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

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

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

  • Acme\Command\HelloCommand -> src/Command/HelloCommand.php
  • Acme\Form\Type\EmployeeType -> src/Form/Type/EmployeeType.php

请记住为每个类定义一个命名空间。这是 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以刷新自动加载器类路径。

于 2012-09-03T12:56:53.253 回答