Структура модуля
Архитектура модуля опирается на строгие соглашения об именовании файлов и директорий в /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: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить