Middle Bitrix Framework D7 Обязательно

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

Автозагрузка классов D7 по стандарту PSR-4 активируется только в момент подключения соответствующего модуля через Loader::includeModule(). Если класс модуля вызывается в фоновом скрипте, агенте или консольной команде до подключения модуля, PHP выбросит ошибку Class not found.

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    Стандарт PSR-4
  • 2
    Регистрация namespace модуля
  • 3
    Автозагрузчик Битрикс

Материалы

Официальная документация

Проверь себя

Класс PriceCalculator из пространства Vendor Shop лежит в /local/modules/vendor.shop/lib/Service/PriceCalculator.php, но PHP пишет «Class not found». Где искать причину?

Проверьте, вызван ли Loader::includeModule('vendor.shop') до первого обращения к классу. Пространство имён Vendor Shop регистрируется на папку lib только внутри includeModule(), а модуль должен быть установлен — иначе метод вернёт false и ничего не зарегистрирует.

Почему класс UserTable главного модуля находится в файле lib/user.php, а не lib/usertable.php, и как это работает у вас?

Loader::autoLoad() для классов с суффиксом Table дополнительно пробует файл без этого суффикса. В своём модуле можно класть OrderTable в lib/order.php, но новый код лучше держать строго по PSR-4, чтобы IDE и Composer его тоже находили.

Чем registerAutoLoadClasses() отличается от registerNamespace() и когда первый ещё нужен?

registerAutoLoadClasses() задаёт прямую карту класс → файл и проверяется первым, до поиска по namespace. Он нужен для старых классов без пространства имён и для файлов, где несколько классов в одном файле. Для нового кода достаточно PSR-4.

Composer установлен, vendor/autoload.php есть, но классы библиотеки не находятся на сайте. Что забыли?

Секцию composer с config_path в .settings.php: Loader::includeComposerAutoload() подключает vendor/autoload.php только по пути из неё. Без секции автозагрузчик Composer в хите не участвует.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти