Всем привет! Сейчас реализую автозагрузку классов для проекта. Для загрузки классов я использую функцию spl_autoload_register. У меня возник вледующий вопрос. К примеру в фреймворке yii2, я могу создать в проекте произвольную папку, в этом папке файл и в этом файле описать класс. Далее я прописываю пространство имен в этом классе и он становиться доступными из всего проекта. Предположим все УЖЕ созданные папки в проекте я могу перебирать в функции spl_autoload_register, но как мне быть, если программист будет в будущем сам СОЗДАВАТЬ папки? Мне парсить папки по всему проекту, чтобы найти необходимый мне файл с классом? Как мне реализовать тоже самое, что уже есть, например в yii2 и сделать это элегантно?
да, парсить все папки.
только не при каждом вызове, а по специальной команде типа "build/manifest", которая просканирует нужные папки, построит "карту" и сохранит ее в кэш.
В общем все решилось тем, что я просто реализовал функцию spl_autoload_register в единой точки входа на сайт, и при создании нового класса с соответствующим namespace'ом в этой функции класс подключается автоматически. Парсер писать не обязательно, необходимо просто правильно написать callback функцию для spl_autoload_register.