Почему композитору нужно вручную создавать файлы автозагрузки?
При установке библиотек с composer
это генерирует autoload_classmap.php
для того, чтобы соединить разные namespaces
с занятиями. Например:
'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php'
Зачем это нужно, когда это можно сделать простым spl_autoload_register()
и обойти всю потребность в создании новых файлов каждый раз?
2 ответа
Потому что создание списка всех классов и мест их обнаружения - дорогостоящая задача, которую вам действительно не нужно выполнять каждый раз, когда запускается автозагрузчик, или даже каждый раз для нового запроса. Вам просто нужно собирать эту информацию один раз каждый раз, когда ваш vendor
папка меняется и хранится где-то. И это именно то, что делает Composer.
Composer использует автозагрузчик PSR-0/4 с некоторыми функциями для регистрации несовместимых с классами и автозагрузчиками PSR-0/4.
Если вы используете опцию --optimize-autoloader (-o)
, Он будет генерировать карту классов, чтобы получить более быстрый автозагрузчик.
Рекомендации