База База веб-разработчика Обязательно

PHP 8 и ООП

Современное ядро D7 опирается на возможности свежего PHP: строгую типизацию, пространства имён, перечисления (enum) и исключения. Для работы с платформой необходимо уверенно владеть автозагрузкой PSR-4, импортом классов через use и понимать разницу между исключением и объектом Bitrix\Main\Result.

6 разработчиков прошли

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

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

  • 1
    Типы, строгая типизация, enum и readonly
  • 2
    Классы, интерфейсы, трейты, абстракции
  • 3
    Namespaces и автозагрузка PSR-4
  • 4
    Исключения и их обработка
  • 5
    Composer и подключение пакетов

Материалы

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

Рекомендуем со стороны

Проверь себя

В файле с namespace вы вызвали Loader::includeModule() и получили «Class not found» с вашим же namespace в имени класса. Что произошло?

PHP ищет класс относительно текущего namespace. Без строки use с полным именем класса Loader из пространства Bitrix Main имя резолвится в ваш namespace, и автозагрузчик такой класс не находит. Это не ошибка Битрикса, это правило разрешения имён PHP.

Чем для вашего кода отличаются Loader::includeModule() и Loader::requireModule()?

includeModule() возвращает false, если модуля нет, и код может отреагировать сам. requireModule() бросает LoaderException, и без try/catch хит завершится ошибкой — например, на редакции без нужного модуля.

Заказчик прислал стек-трейс с TypeError из метода ядра, хотя код «раньше работал». Где искать причину?

В том, что вы передаёте: ядро main типизирует сигнатуры, а значение из $_GET или старого API приходит строкой или null. Проверять и приводить тип нужно на своей стороне до вызова метода ядра.

Почему в проекте Битрикс недостаточно знать require и include, чтобы подключать классы?

Классы модулей ядро находит через Loader::registerNamespace() по PSR-4, а сторонние библиотеки — через vendor/autoload.php Composer. Если структура папок не совпадает с namespace, класс не загрузится, сколько бы require вы ни написали.

Не сходится?

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

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

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

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

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

на связи

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

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

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

Войти