@dasauser
Пишу на PHP

По какому принципу работает autoload в composer?

Пишу свой автозагрузчик.
Хочу понять, по какому принципу работает автозагрузчик в composer.
Пока что сделал так:
1. glob(*.php)
2. foreach {require file}
А как это работает в composer?
Что под капотом? Как реализовано подключение файлов? Где посмотреть код?
Он просто смотрит в json file и тянет все значения полей autoload, а потом подключает по ним все файлы?
Или же он как то понимает, какие файлы нужно подключить?
Объясните, покидайте ссылок. Не смог найти ничего конкретного.
(Хотя возможно я просто плохо искал...)
  • Вопрос задан
  • 1064 просмотра
Решения вопроса 2
Composer работает по нескольким стандартам - PSR-0 и PSR-4 которые работают по соглашению именования классов и расположения файлов в которых они объявлены - то есть в нем реализована "Ленивая" загрузка классов - класс грузится только когда впервые используется (https://secure.php.net/manual/ru/language.oop5.aut...
Смотри также:
- https://www.php-fig.org/psr/psr-0/
- https://www.php-fig.org/psr/psr-4/

Так же для совместимости есть способ classmap когда явно задается карта "класс" => "файл":
- https://getcomposer.org/doc/04-schema.md#autoload
Ответ написан
@dasauser Автор вопроса
Пишу на PHP
В принципе все более-менее понятно.
Происходит подключение класса, например use Class.
Если класс не найден, то вызываются зарегистрированные spl_методы.
Метод ищет ключ Class ищет в карте_классов.json (забыл как называется), со структурой "class_path : file_path".
Если находится, то происходит подключение класса (require, include, когда как. Отчего зависит я так и не понял).
Если нет, то ищет в основных папках, массив путей которых тоже хранится где-то в каком-то виде (тут я не уверен, так ли в композере, но в другом автолоадере видел такое).
Если никогда ничего не найдено, то вернёт ошибку.
Вроде так, если кто знает больше - поправьте меня, исправлю ответ.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы