Сниппеты
Назад к сниппетам

Модуль Битрикс: автозагрузка классов через Loader::registerAutoLoadClasses

Регистрация автозагрузки классов модуля в include.php по пути от корня модуля. По документации Битрикс — без require_once и сломанных путей при переносе.

php
9 февраля 2026 г.

Закрывает боль: в модуле подключают классы через require_once с относительными путями — при смене места вызова или структуры папок получаем «Failed opening required». По документации Битрикс классы модуля регистрируют через Loader::registerAutoLoadClasses() в include.php; пути задаются от корня модуля.

Структура:

/local/modules/vendor.simplemodule/
├── include.php
└── lib/
    └── Service/
        └── DateProvider.php

include.php модуля:

<?php

use Bitrix\Main\Loader;

Loader::registerAutoLoadClasses(
    'vendor.simplemodule',
    [
        'Vendor\\SimpleModule\\Service\\DateProvider' => 'lib/Service/DateProvider.php',
        'Vendor\\SimpleModule\\EventHandler'          => 'lib/EventHandler.php',
    ]
);

Класс lib/Service/DateProvider.php:

<?php
namespace Vendor\SimpleModule\Service;

class DateProvider
{
    public static function getCurrentDate(): string
    {
        return date('d.m.Y');
    }
}

Использование в компоненте или другом коде:

use Vendor\SimpleModule\Service\DateProvider;

$date = DateProvider::getCurrentDate();

Важно: Первый аргумент — MODULE_ID (строка). Ключи массива — полные имена классов с экранированными обратными слэшами (Vendor\SimpleModule\Service\DateProvider). Значения — пути от корня модуля, без __DIR__ и без ведущего слеша. После установки модуля автозагрузка доступна везде, где подключают модуль через Loader::includeModule('vendor.simplemodule').

Модуль Битрикс: автозагрузка классов через Loader::registerAutoLoadClasses | Viku-Lov Studio