mrvinil
12/15/2017 - 10:31 AM

Автоподключение классов (модулей) в Битриксе

<?
// Карта классов. Задает соответствие класса модулю
$map = array(
    'iblock' => 'CIBlock CIBlockElement CIBlockSection',
    'catalog' => 'CCatalogProduct',
);
// Преобразуем карту в удобный для обработки вид
$preparedMap = array();
foreach($map as $module => $classes) {
    foreach(explode(' ', $classes) as $class) $preparedMap[$class] = $module;
}
spl_autoload_register(function($classname) use ($preparedMap) {
    // Определяем к какому модулю принадлежит класс
    if (isset($preparedMap[$classname]) && $preparedMap[$classname]) {
        // ... и подключаем этот модуль
        CModule::IncludeModule($preparedMap[$classname]);
        // ... а затем передаем управление автозагрузчику битрикса
        CModule::RequireAutoloadClass($classname);
    }
});

//Пишем этот код, например, в init.php и о ручном подключении модулей можно забыть раз и навсегда.
?>