为什么作曲家需要手动生成自动加载文件?

时间:2014-09-08 13:47:57

标签: php composer-php autoload

使用composer安装库时,它会生成autoload_classmap.php,以便将不同的namespaces与类连接起来。例如:

'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php'

为什么在使用简单的spl_autoload_register()完成此操作时甚至需要这样做,并且每次都不需要生成新文件?

2 个答案:

答案 0 :(得分:2)

因为生成所有类的列表以及可以找到它们的位置是一项昂贵的任务,您真的不希望每次调用自动加载器时都要这样做,甚至只是每次都有新的要求。每次vendor文件夹更改并将其存储在某处时,您只需编译此信息一次。这正是Composer所做的。

答案 1 :(得分:0)

Composer使用具有某些功能的PSR-0/4自动加载器来注册不符合PSR-0/4类和自动加载器。

如果您使用选项--optimize-autoloader (-o),它会生成一个类地图以获得更快的自动加载器。

参考