


Про namespace расскажите немного?
Есть такая фича в программировании как namespace... Я этим только начинаю пользоваться. Вот только не возьму в толк как use Joomla\CMS\Factory указан в файле для подключения, а на самом деле он находится joomla_root/libraries/src/Factory.php. Ведь по логике должен находиться в Joomla\CMS\Factory? Для чего это сделано и как это работает?
Нет, не так.
Да, существует документ PSR-4 - описывающий РЕКОМЕНДАЦИИ по связи имени класса и пути к файлу с кодом этого класса. Именно про эти рекомендации ты и говоришь. И именно на этих рекомендациях построен Composer.
Но к самому PHP это никакого отношения не имеет: автозагрузка в нём реализуется подключением написанных на самом PHP модулей-автолзагрузчиков: https://www.php.net/manual/ru/function.spl-autoload-register.php . И эти автозагрузчики сами решают, где и как искать файл по имени класса.
CMS Joomla была создана за много лет до того, как появились и рекомендации PSR-4, и Composer. Потому, структура директорий и файлов у неё своя. И никто не будет полностью переделывать движок CMS - только для того, чтобы соответствовать рекомендациям.
P.S. Пространства имён нужны не для автозагрузки (это лишь приятный бонус, упорядочивающий структуру проекта), а для того, чтобы исключить конфликт имён: если каждый компонент системы имеет своё пространство имён, то автор одного компонента может выбирать названия для классов, функций и т.д., не оглядываясь на имена, используемые в других компонентах.