← К заметкам

Заметки

Loader::includeModule / CModule::IncludeModule: что использовать

В новом D7-коде модуль обычно подключают через Bitrix\Main\Loader::includeModule(). В старых проектах встречается CModule::IncludeModule() — само наличие этого вызова ещё не означает ошибку.

use Bitrix\Main\Loader;

if (!Loader::includeModule('crm')) {
    throw new RuntimeException('Модуль CRM недоступен');
}

Оба варианта требуют уже подключённого ядра Битрикса. use лишь сокращает имя класса и не загружает модуль.

Проверка результата здесь нужна по делу: без модуля следующий вызов CRM-класса даст другую ошибку и скроет причину. Подключайте нужный модуль до первого использования его классов.

Механическая замена всех CModule на Loader не переводит проект на D7. Важнее, какой API вызывается дальше и какие версии ядра поддерживает код.