Бесплатный

Чистый код в компонентах Битрикса: class.php

Кирилл Новожилов

Автор:

Кирилл Новожилов

6 уроков
3ч 55м

Бесплатный курс о том, как навести порядок в компонентах 1С-Битрикс. У каждого проекта есть компонент, в который боятся заходить: внутри component.php на четыреста строк, запросы к базе вперемешку с выводом, кэш, который иногда отдаёт чужие данные, и result_modifier.php, где живёт половина бизнес-логики.

За шесть уроков вы переведёте такой компонент в читаемый class.php: с контрактом параметров, безопасным кэшем, декомпозицией на понятные методы и общим базовым классом в собственном модуле проекта.

Весь курс построен на одном примере — списке новостей. В первом уроке это типичный legacy 2015 года: 32 запроса к базе на десять новостей и ссылка «Редактировать», которую кэш показывает анонимам. В шестом — компонент с типизацией и D7 ORM, у которого число запросов не растёт вместе со списком. Каждый урок — отдельный шаг, его можно посмотреть отдельной папкой в репозитории примеров.

Что вы получите:

  • каркас class.php, который можно копировать в новые задачи;
  • понимание жизненного цикла компонента и того, где именно ломается кэш;
  • умение находить и чинить N+1 в типовых списках;
  • собственный модуль project.core с базовым классом и трейтами;
  • чек-лист для code review чужих компонентов.

Уроки идут на локальном окружении Omut, все команды и адреса в тексте рабочие, переводить их под себя не нужно. Код примеров прогнан на ядре main 26.800. Курс бесплатный, код лежит на GitHub.

Нужно заранее: PHP 8.2 и базовое ООП, опыт хотя бы одного компонента в процедурном стиле, понимание инфоблоков и шаблонов компонентов.

От legacy-компонента к чистому class.php

Шесть уроков на одном компоненте. Вы развернёте стенд с настоящим legacy-кодом, разберёте, чем он опасен, и перенесёте его в class.php: сначала «в лоб», потом по жизненному циклу компонента. Затем возьмётесь за два места, где компоненты ломаются чаще всего: входящие параметры и кэш. $arParams станет строгим контрактом, а кэш перестанет отдавать одному пользователю данные другого.

Во второй половине курса executeComponent() распадётся на изолированные методы, выборка перейдёт на D7 ORM, а N+1 исчезнет: число запросов перестанет расти вместе со списком. Общее уедет в собственный модуль проекта: базовый класс, трейты для опциональных способностей, установка через админку. Финальный урок — тот же маршрут рефакторинга на компоненте из вашего проекта.

Чистый код в компонентах Битрикса: class.php

Ваш прогресс

Войдите в аккаунт, чтобы отслеживать свой прогресс по курсу

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

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

на связи

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

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

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

Войти