Jump to main content Jump to doc navigation

Пространства имён организуют компоненты: связывают строки лексикона и пакеты и показывают Revolution, какие объекты к какому пакету относятся.

Лексиконы, контроллеры, процессоры и пакеты моделей обычно лежат внутри конкретного пространства имён.

Использование

Revolution по путям пространства имён находит файлы сторонних компонентов для пользовательских страниц Менеджера и подтягивает для них языковые строки.

Пример: пространство имён quip с путём /www/modx/core/components/quip/. Когда CMP открывается из Action с контроллером index, MODX ищет /www/modx/core/components/quip/index.php и подставляет его как страницу CMP. Практичнее указать контроллер controllers/index, тогда файл будет /www/modx/core/components/quip/controllers/index.php (обычная схема путей для Extras в MODX).

Лексиконы в пространствах имён

Пространство имён изолирует лексиконы и темы. При загрузке укажите пространство имён перед именем темы через двоеточие. Тема comment для quip:

$modx->lexicon->load('quip:comment');

Для английского языка система ищет lexicon/en/comment.inc.php в пути пространства имён Quip. Темы подгружаются по этому пути. Класть файлы тем в каталоги ядра MODX не нужно.

Bootstrap сервисов

Если в корне пространства имён есть файл bootstrap.php, MODX подключит его при инициализации.

Так можно регистрировать сервисы в DI-контейнере.

В bootstrap.php доступны:

  • MODX\Revolution\modX $modx
  • array $namespace

Примеры

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

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$213 per month—let's make that $500!

Learn more