Автозагрузка классов в Битрикс

Раньше я подключал к странице файлы классов посредством функций require и require_once. И так в каждом новом шаблоне. Сейчас в Битриксе есть замечательная возможность все классы подключить в одном месте. И работать на любой странице сайта, так будто эти файлы к ней подключены.

Нижеследующий код добавляется в файл /bitrix/php_interface/init.php

Если этого файла нет, создайте его.

<?php
  CModule::AddAutoloadClasses(
    '', // не указываем имя модуля
    array(
        // ключ - имя класса, значение - путь относительно корня сайта к файлу
        'AddIBlockElement'         => '/include/class.AddIBlockElement.php',
        'DateConvert'              => '/include/class.DateConvert.php',
        'Content'                  => '/include/class.Content.php',
        'Image'                    => '/include/class.Image.php',
        'RandomContent'            => '/include/class.RandomContent.php'
    )
);
?>
 

На самой странице достаточно подключить пролог и сразу работать с любым классом.

<?php 

//подключим пролог
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); 

//И работаем с нашим классом
$Heroes = new Heroes();
$arHeroesList = $Heroes->GetHeroesList();
?>
 

2 комментария

  • Николай

    02.08.2019

    Забавно, но метод CModule::AddAutoloadClasses без указания модуля делает примерно тоже самое что и require_once только с массивом.
    То есть:
    foreach( $requiredFiles as $requiredFile ) require_once $requiredFile;

    Хотя, может что то путаю. Все же, Спасибо.

    Reply
  • Николай

    02.08.2019

    Анн..нет, ошибся в тестировании функции :thumbs_up:

    Reply

Добавить комментарий