Задать вопрос
@danforth

Логика работы Autoloader, как правильно?

Всем привет, занимаюсь разработкой собственного велосипеда: хочу понять как работает. Подсмотреть в фреймворки пока не могу, т.к. немного сложно.

Суть вопроса: как работает Autoloader c учетом PSR-4 спецификации. Composer не предлагать.

Итак, моя логика такая:
Есть класс Autoloader в котором два статических метода, init() и loader(). init() дергается в бутстрап файле и ничего кроме spl_autoload_register('self::loader'); не содержит. Тут начинается заминка: мой проект разбит по папкам на библиотеки (/libs/) и файлы приложения (/app/).
Два этих пути я включаю в массив класса Autoload. Далее, по идеи, при вызове функции класса, я делаю explode('\\', $calledClass); и получаю путь с учетом неймспейсов. После чего foreach-ем пробегаю по массиву с директориями где находятся мои файлы, и если файл обнаружен, то вызываю его. К примеру, $car = new \Cars\Car(); тогда мой загрузчик делает так:
- Проверяет /libs/Cars/Car.php
- Проверяет /app/Cars/Car.php
Если нету, то пишет в лог что запущено полное сканирование, и где-то не совпадает неймспейс с путем
- Проверяет /libs/Car.php
- Проверяет /app/Car.php
и т.д., т.е. уже полное сканирование

Отсюда возникают вопросы:
  1. Зачем нужна функция spl_autoload_extensions, кроме как того, что содержит список расширений. Чем она отличается от обычной константы (которая может быть массивом) со списком расширений
  2. Проверив пути совпадающие с неймспейсом и не найдя ни одного файла, стоит ли делать более глубокий поиск по директориям уже без учета неймспейса?
  3. Правильно ли я понял вообще спецификацию PSR-4?
Результат: сделал так как я и описал. Сканирует папку libs и папку app с учетом неймспейсов. Если не планируется использоваеть неймспейсы, то нужно воткнуть класс через include в bootstrap.php
  • Вопрос задан
  • 470 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽