为什么composer需要手动生成自动加载文件



使用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

相关内容

  • 没有找到相关文章

最新更新