自动加载

对于指定自动加载信息的库,Composer 会生成 vendor / autoload.php 文件。你只需包含此文件即可免费进行自动加载。

require __DIR__ . '/vendor/autoload.php';

这使得使用第三方代码变得非常容易。例如:如果你的项目依赖于 Monolog,你可以从它开始使用类,它们将被自动加载。

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');

你甚至可以通过向 composer.json 添加 autoload 字段将自己的代码添加到自动装带器中

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

Composer 将为 Acme 命名空间注册 PSR-4 自动加载器。

你可以定义从名称空间到目录的映射。src 目录将位于项目根目录中,与供应商目录位于同一级别。示例文件名是包含 Acme\Foo 类的 src/Foo.php

添加自动加载字段后,必须重新运行 dump-autoload 才能重新生成 vendor/autoload.php 文件。

包含该文件也将返回自动加载器实例,因此你可以将 include 调用的返回值存储在变量中并添加更多名称空间。例如,这对于在测试套件中自动加载类非常有用。

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->add('Acme\\Test\\', __DIR__);

除 PSR-4 自动加载外,Composer 还支持 PSR-0,类映射和文件自动加载。