PHP 8 и ООП
Современное ядро D7 опирается на возможности свежего PHP: строгую типизацию, пространства имён, перечисления (enum) и исключения. Для работы с платформой необходимо уверенно владеть автозагрузкой PSR-4, импортом классов через use и понимать разницу между исключением и объектом Bitrix\Main\Result.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Типы, строгая типизация, enum и readonly
-
2
Классы, интерфейсы, трейты, абстракции
-
3
Namespaces и автозагрузка PSR-4
-
4
Исключения и их обработка
-
5
Composer и подключение пакетов
Материалы
Официальная документация
-
Официальное руководство PHP Новая дока
Рекомендуем со стороны
Проверь себя
В файле с 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: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить