Я создаю плагин для СMS. Изначально я использовал префикс в именах классов для уникализации и не использовал автозагрузку классов. Сейчас кодовая база значительно увеличилась, и я решил заменить префиксы на пространства имён, а также внедрить автозагрузку классов. У меня сразу возникло несколько вопросов. Ранее я использовал фреймворки, но в нём правила именования и автозагрузки задавались самим фреймворком.
Для уникализации имени класса мне достаточно одного короткого слова. Таким образом, для файлов во всех папках я хотел бы использовать один короткий namespace. А в use прописывать путь до папок с нужными классами. Короткий namespace упростит создание новых классов, а пути к папкам в use позволят мне не прописывать полный путь до каждого используемого класса. Но вся моя теория разбивается о реальные примеры.
use folder1\subfolder1;
spl_autoload_register(function ($class) {
var_dump($class);
});
$class = new Test_class();
В функцию автозагрузки не попадает путь из use, пока я не заменю use на folder1\subfolder1\Test_class. Но такой вариант меня совсем не устраивает. Я не получу профита в удобстве использования, если заменю 10 вызовов require в моем файле на 10 вызовов use.
Я добавил namespace в главный файл плагина, не являющийся классом и запутался окончательно. Если использовать use folder1\subfolder1, то взагрузчике получаю my_namespace\Test_class. Если же прописать use folder1\subfolder1\Test_class, то namespace исчезает из переданного имени класса, но появляется путь из use. Почему в одних случаях namespace игнорируется, а в других - нет?
В итоге мне непонятно, связан ли как-то namespace и use, и почему путь из use не попадает в функцию автозагрузки.
Подскажите, как настроить всё правильно.