Пространства имен позволяют нам организовывать наши классы PHP аналогично тому, как каталоги позволяют нам организовывать наши файлы. В частности, рекомендация PSR4 , которую использует Joomla, позволяет нам определить, в каком файле должен находиться определенный класс.

Чтобы убедиться в этом, давайте возьмем пример файла administrator/components/com_content/src/View/Articles/HtmlView.php, который содержит код для представления статей администратору. Этот файл содержит строки

namespace Joomla\Component\Content\Administrator\View\Articles;
...
class HtmlView extends BaseHtmlView { …

таким образом, полное имя (FQN) класса равно \Joomla\Component\Content\Administrator\View\Articles\HtmlView.

Joomla содержит список строк с префиксами пространства имен и сравнивает строку, содержащую полное имя класса, с этим списком, начинающимся с левой стороны имени класса, чтобы увидеть, может ли она найти частичное совпадение. В этом примере префикс пространства имен 'Joomla\Component\Content\Administrator' будет соответствовать.

С этим префиксом пространства имен связан каталог в файловой системе, который является отправной точкой для поиска классов. В данном случае каталогом является administrator/components/com_content/src. (Вскоре мы увидим, как определяются префиксы пространства имен и связанные с ними каталоги).

Затем он удаляет соответствующий префикс пространства имен из FQN, оставляя \View\Articles\HtmlView , и рассматривает это как путь вниз из вышеупомянутого каталога. Таким образом, полный путь к файлу: administrator/components/com_content/src/View/Articles/HtmlView.php. Диаграмма дает наглядное представление об этом.

Namespacing