使用composer
安装库时,它会生成一个autoload_classmap.php
,以便将不同的namespaces
与类连接起来。例如:
'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php'
当它可以用一个简单的spl_autoload_register()
来完成,并且可以绕过每次生成新文件的整个需要时,为什么还要这样做?
因为生成所有类的列表以及在哪里可以找到它们是一项昂贵的任务,而真的不想每次调用自动加载器,甚至每次调用新请求时都必须这样做。您只需要在每次vendor
文件夹更改时编译此信息一次,并将其存储在某个位置即可。这正是Composer所做的。
Composer使用具有某些功能的PSR-0/4自动加载器来注册不符合PSR-0/4类和自动加载器的内容。
如果您使用选项--optimize-autoloader (-o)
,它将生成一个类映射以获得更快的自动加载器。
参考
- https://getcomposer.org/doc/04-schema.md#autoload
- https://getcomposer.org/doc/03-cli.md#install