PHP
#bitrix#php#local#php_interface#autoload#Loader#d7

Bitrix /local: autoload.php — автозагрузка классов из lib

Регистрация классов /local/php_interface/lib через Loader::registerAutoLoadClasses. Официальный API Bitrix, без Composer.

Как использовать

  1. Разместите файл в /local/php_interface/autoload.php и подключите из init.php после constants.php.
  2. Классы положите в /local/php_interface/lib (например lib/Services/OrderService.php с namespace Project\Services).
  3. Добавляйте в массив новые пары [полное имя класса => путь от корня сайта].

Регистрация автозагрузки своих классов из /local/php_interface/lib через Loader::registerAutoLoadClasses. Первый параметр null — классы не принадлежат модулю ядра. Пути задаются от корня сайта ($_SERVER['DOCUMENT_ROOT']).

<?php
// /local/php_interface/autoload.php

use Bitrix\Main\Loader;

Loader::registerAutoLoadClasses(null, [
    'Project\\Services\\OrderService' =>
        '/local/php_interface/lib/Services/OrderService.php',
    'Project\\Helpers\\Catalog' =>
        '/local/php_interface/lib/Helpers/Catalog.php',
]);

Пример класса сервиса (логика не в init.php):

<?php
// /local/php_interface/lib/Services/OrderService.php

namespace Project\Services;

class OrderService
{
    public static function onOrderSaved(\Bitrix\Main\Event $event): void
    {
        $order = $event->getParameter('ENTITY');
        if (!$order) {
            return;
        }
        // Обработка заказа: CRM, склад и т.д.
    }
}

Замечания

  • Loader::registerAutoLoadClasses(string $moduleName, array $arClasses): при $moduleName = null классы считаются пользовательскими (не из модуля Bitrix).
  • Ключ массива — полное имя класса с namespace, значение — путь от корня сайта (начинается с /local/).
  • Имена классов и пространства имён должны соответствовать PSR-4-подобной структуре каталогов (например, Project\Services\OrderServicelib/Services/OrderService.php).