Middle Модули Обязательно

Структура модуля

Архитектура модуля опирается на строгие соглашения об именовании файлов и директорий в /local/modules/<id>/. Пространство имен в lib/ точно повторяет идентификатор модуля (vendor.project соответствует Vendor\Project\...), обеспечивая автозагрузку классов по PSR-4 без необходимости ручной регистрации в include.php.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    include.php — точка входа
  • 2
    install/index.php — установщик
  • 3
    lib/ — классы модуля
  • 4
    lang/ — языковые файлы

Материалы

Проверь себя

Модуль установился, но в списке модулей у него нет названия и описания. Где искать?

В пути языкового файла. Конструктор класса из install/index.php читает MODULE_NAME через Loc::getMessage(), а ядро ищет фразы строго в lang/ru/install/index.php: структура lang зеркалит структуру модуля, и отклонение даёт пустые строки без ошибки.

Класс лежит в lib, модуль подключён, а автозагрузка его не находит. Какое соглашение нарушено?

Пространство имён должно строиться из идентификатора модуля (company.module даёт Company Module), а путь файла — повторять его относительно lib. Иначе нужен registerAutoLoadClasses() или registerNamespace() в include.php.

Почему тянуть Loader::includeModule других модулей и обработчики событий в include.php — плохая идея?

include.php выполняется при каждом подключении модуля на любом хите, в агентах и консоли. Зависимости подключают там, где они нужны, обработчики регистрируют при установке; пустой include.php — нормальное состояние.

Поправили компонент в install/components модуля, а на сайте изменений нет. Почему?

При установке InstallFiles() копирует компоненты из install в /local/components, и сайт работает с копией. Либо переустановить модуль, либо править рабочую копию и переносить обратно в install.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти