Автозагрузка классов
Автозагрузка классов (autoloading) помогает системе автоматически находить и загружать необходимые классы. Это позволяет не подключать файлы вручную.
Подключить модули
Метод includeModule() подключает указанный модуль и файлы автозагрузки: include.php и /lib/autoload.php. Чтобы использовать классы, модуль должен быть установлен в системе. Только после успешного вызова includeModule() классы модуля становятся доступны для автозагрузки.
// Подключим модуль CRM, который уже установлен в системе
if (\Bitrix\Main\Loader::includeModule('crm')) {
// Теперь можно работать с классами CRM
}
else {
// Обработка случая, когда модуль недоступен
throw new \Exception('Модуль CRM не установлен');
}
Метод возвращает значение:
-
true— если модуль подключен, -
false— модуль не найден или ошибка.
Зарегистрировать класс для автозагрузки
Регистрируйте для автозагрузки классы, которые используются в большинстве сценариев, например, классы для работы с базой данных или обработки запросов. Это избавит систему от повторного поиска файлов. Классы для узких задач можно не регистрировать — они загрузятся автоматически при первом обращении.
Добавить классы в автозагрузку можно в файле /local/modules/[ваш_модуль]/include.php, который система автоматически подключает при первом обращении к модулю.
/local/modules/mymodule/
├── include.php // регистрируйте классы в файле include.php
├── lib/ // основные классы в папке lib
│ └── main.php
└── classes/ // дополнительные классы в папке classes
└── tools
Классы можно регистрировать в любом файле, но обязательно до их первого вызова.
Зарегистрировать класс можно методом Loader::registerAutoLoadClasses.
// В файле /local/modules/mymodule/include.php
\Bitrix\Main\Loader::registerAutoLoadClasses(
'mymodule', // Имя вашего модуля
[
// Класс => относительный путь от папки модуля
'MyModule\Main' => 'lib/main.php',
'MyModule\Tools' => 'classes/tools.php',
]
);
Зарегистрировать пространство имен по PSR-4
PSR-4 — стандарт автозагрузки:
-
где каждый
\в пространстве имен соответствует папке, -
имя класса должно совпадать с именем файла.
Добавляйте пространства имен для автозагрузки в файл /local/modules/[ваш_модуль]/include.php или в другие файлы, до первого обращения к классам из этого пространства. Файл include.php подключается при вызове includeModule() для вашего модуля.
Зарегистрировать пространство имен можно методом Loader::registerNamespace.
\Bitrix\Main\Loader::registerNamespace(
"MyCompany\MyModule", // Пространство имен
"/local/modules/mymodule/lib" // Путь к классам. Можно указывать несколько путей
);
Как работает поиск класса
-
Система проверяет, зарегистрирован ли класс для автозагрузки.
-
Если нет — ищет файл по PSR-4.
-
Если класс не найден — возвращает ошибку.
Автозагрузка через Composer
Composer — стандартный менеджер зависимостей для PHP, который позволяет управлять библиотеками и их версиями. В Bitrix Framework он используется для управления сторонними библиотеками и их автоматической загрузки.
Подробнее в статье Composer.