# 自動加載
對于庫的自動加載信息,Composer 生成了一個`vendor/autoload.php`文件。你可以簡單的引入這個文件,你會得到一個免費的自動加載支持。
~~~php
require 'vendor/autoload.php';
~~~
這使得你可以很容易的使用第三方代碼。例如:如果你的項目依賴 monolog,你就可以像這樣開始使用這個類庫,并且他們將被自動加載。
~~~php
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');
~~~
你可以在`composer.json`的`autoload`字段中增加自己的 autoloader。
~~~json
{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}
~~~
Composer 將注冊一個[PSR-4](http://www.php-fig.org/psr/psr-4/)autoloader 到`Acme`命名空間。
你可以定義一個從命名空間到目錄的映射。此時`src`會在你項目的根目錄,與`vendor`文件夾同級。例如`src/Foo.php`文件應該包含`Acme\Foo`類。
添加`autoload`字段后,你應該再次運行`install`命令來生成`vendor/autoload.php`文件。
引用這個文件也將返回 autoloader 的實例,你可以將包含調用的返回值存儲在變量中,并添加更多的命名空間。這對于在一個測試套件中自動加載類文件是非常有用的,例如。
~~~php
$loader = require 'vendor/autoload.php';
$loader->add('Acme\\Test\\', __DIR__);
~~~
除了 PSR-4 自動加載,classmap 也是支持的。這允許類被自動加載,即使不符合 PSR-0 規范。詳細請查看[自動加載-參考](https://docs.phpcomposer.com/04-schema.html#autoload)。
> **注意:**Composer 提供了自己的 autoloader。如果你不想使用它,你可以僅僅引入`vendor/composer/autoload_*.php`文件,它返回一個關聯數組,你可以通過這個關聯數組配置自己的 autoloader。