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

Создание модуля и проектный модуль

Собственный проектный модуль изолирует бизнес-логику проекта, заменяя перегруженный init.php структурированной библиотекой классов, контроллеров и обработчиков. Модуль регистрируется в системе через ModuleManager::registerModule(), а проверка зависимостей через Loader::includeModule() гарантирует предсказуемое поведение в консольных скриптах и фоновых задачах.

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

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

  • 1
    Namespace и автозагрузка
  • 2
    Регистрация модуля
  • 3
    Зависимости от других модулей

Материалы

Проверь себя

Обработчик события зарегистрирован в install/index.php, модуль скопировали на прод, а обработчик молчит. Что пропустили?

Установку. Копирование папки не запускает DoInstall(), а значит ни registerModule(), ни registerEventHandler() не выполнились. Модуль ставят через страницу Marketplace или Модули в админке, либо тем же кодом из деплоя.

Почему синтаксическая ошибка в init.php кладёт весь сайт, а та же ошибка в классе модуля — только страницу, где класс вызвали?

init.php подключается в прологе на каждом хите раньше всего остального. Классы модуля грузятся автозагрузкой по требованию, и ошибка проявится только там, где класс реально нужен.

Заказчик хочет, чтобы модуль работал и без модуля catalog. Как оформить зависимость?

Проверять Loader::includeModule('catalog') в том месте, где нужна функциональность каталога, и ветвиться по результату. Loader::requireModule() бросает LoaderException и годится только там, где без модуля продолжать нельзя.

Класс обработчика лежит в вашем модуле, но при регистрации в toModuleId указали main. Что произойдёт при вызове события?

Ядро подключит include.php модуля main, а не вашего, и автозагрузка вашего класса не сработает: обработчик не будет найден. toModuleId — это модуль, где живёт класс обработчика.

Не сходится?

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

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

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

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

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

на связи

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

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

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

Войти