Middle Компоненты: разработка Обязательно

class.php: жизненный цикл и структура

Жизненный цикл class.php начинается с метода onPrepareComponentParams(), где валидируются и приводятся типы параметров до их системного экранирования ядром. Метод executeComponent() управляет кешированием и наполнением массива $arResult, а логика, требующая исполнения на каждом хите (заголовки, хлебные крошки, ассеты), выносится в файл component_epilog.php.

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

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

  • 1
    class.php — ООП-логика
  • 2
    component.php — процедурная логика
  • 3
    .description.php — описание
  • 4
    .parameters.php — параметры

Материалы

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

Проверь себя

В onPrepareComponentParams() параметр TITLE приходит с «&», а в шаблоне уже с «&». Кто его изменил и где взять исходный?

Ядро: __prepareComponentParams() вызывается после onPrepareComponentParams() и экранирует строки, в которых есть символы из набора ; & < > и кавычка. Исходное значение лежит в $arParams с префиксом ~, то есть в ~TITLE.

Заказчик жалуется, что вложенный массив в параметрах вывелся в шаблоне с тегами. Почему экранирование не сработало?

__prepareComponentParams() обрабатывает строки и только первый уровень массивов. Вложенные массивы глубже одного уровня остаются как есть, их нужно приводить самим в onPrepareComponentParams().

Чем component.php отличается от class.php по возможностям, кроме стиля?

component.php — включаемый файл, у него нет onPrepareComponentParams(), подписанных параметров и AJAX-действий через Controllerable. Он получает уже экранированные $arParams и не может переопределить шаги жизненного цикла. Новый код только в class.php.

Почему $arParams = $this->arParams; в методе класса ломает передачу изменений в шаблон?

Ядро передаёт в шаблон и component.php ссылки на члены класса arParams и arResult. Присваивание копии или unset разрывает связь, и правки уходят в локальную переменную, а не в шаблон.

Не сходится?

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

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

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

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

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

на связи

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

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

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

Войти