Middle Качество кода Рекомендуется

Слои: DTO, Repository, Service

Слоистая архитектура в проектах на Битриксе разделяет логику на типизированные DTO с валидацией, репозитории для изоляции источников данных (инфоблоки, Highload, ORM) и бизнес-сервисы с возвратом Result. Сервисы регистрируются в PSR-11 совместимом локаторе ServiceLocator, что позволяет повторно использовать одну и ту же логику в компонентах, AJAX-контроллерах и фоновых агентах.

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

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

  • 1
    Зачем выносить логику из компонентов
  • 2
    DTO и типобезопасность
  • 3
    Repository поверх инфоблоков и ORM
  • 4
    Сервисный слой и его границы

Материалы

Проверь себя

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

Правило живёт в шаблоне, в component_epilog и в обработчике события отдельно. Ему место в одном сервисе в lib модуля, который зовут компонент, контроллер и обработчик.

Чем DTO реквеста отличается от массива из $request->getPostList()?

У DTO типизированные readonly-свойства и атрибуты валидации NotEmpty и Length из Bitrix Main Validation Rule; контроллер получает его через автоваринг уже проверенным. Массив проверяет каждый метод заново или не проверяет вовсе.

Сервис зарегистрирован в .settings.php модуля, а ServiceLocator::get() бросает исключение «не найден». Почему?

Сервисы модуля регистрируются после Loader::includeModule(). Пока модуль не подключён, в контейнере их нет; глобальные сервисы из bitrix/.settings.php доступны сразу после инициализации ядра.

Репозиторий возвращает массивы в формате GetList с ключами и тильдой. Это слой?

Нет, это переименованный вызов API: хранилище протекает наружу. Репозиторий отдаёт DTO или объекты ORM и прячет способ хранения, чтобы инфоблок можно было заменить на highload-блок без правки сервисов.

Не сходится?

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

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

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

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

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

на связи

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

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

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

Войти