Пространства имён
Последнее обновление Oct 20th, 2026 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn moreПространство имён организует компоненты: сопоставляет короткое имя каталогу на диске, по которому MODX находит лективы компонента, контроллеры менеджера и пакеты моделей без прописанных в коде путей.
Лексивы и контроллеры находятся через пространство имён. Процессоры — нет, см. Процессоры.
Использование¶
Страницу менеджера задают два параметра запроса: namespace (по умолчанию core) и a, в котором лежит действие. По ?a=some/action&namespace=quip MODX ищет контроллер в каталоге пространства имён quip — чаще всего это core/components/quip/controllers/some/action.class.php.
Если у пространства имён quip путь /www/modx/core/components/quip/, файл выше найдётся как /www/modx/core/components/quip/controllers/some/action.class.php.
Пункты меню хранят ту же пару: в modMenu есть колонки action и namespace (по умолчанию core). Колонки controller нет — класс modAction и его поле controller удалены в 3.0. Полный порядок разрешения описан в разделе Контроллеры и меню.
Лексивы в пространствах имён¶
Пространства имён изолируют лективы и темы. Чтобы загрузить тему comment из пространства имён quip, укажите пространство имён перед именем темы через двоеточие:
$modx->lexicon->load('quip:comment');
Для английского языка система ищет lexicon/en/comment.inc.php в пути пространства имён, поэтому темы можно держать вне каталогов ядра MODX и подгружать по требованию.
Bootstrap сервисов¶
Если в корне пространства имён есть файл bootstrap.php, MODX подключит его при инициализации.
Так можно регистрировать сервисы в DI-контейнере.
В файле доступны:
MODX\Revolution\modX $modxarray $namespace
[!WARNING]
_initNamespaces()выполняется рано — до загрузки пакетов расширений, до инициализации культуры и до событияOnMODXInit. В этот момент$modx->lexiconещёnull, а модели компонентов не зарегистрированы. Здесь регистрируйте автозагрузчики и сервисы; всё, что зависит от лексикона или модели, выполняйте изOnMODXInit.
Примеры¶
PSR-4 автозагрузчик на каталог src пространства имён:
\MODX\Revolution\modX::getLoader()->addPsr4('My\\Component\\', $namespace['path'] . 'src/');
Загрузка модели xPDO:
$modx->addPackage('My\\Component\\Model', $namespace['path'] . 'src/', null, 'My\\Component\\');
Регистрация сервиса в DI-контейнере:
$modx->services->add('my_service', function($c) use ($modx) {
return new My\Component\MyService($modx);
});
Выберите уникальное имя сервиса.
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn more










