Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Контейнер: Подробное руководство», проанализируем лучшие практики и покажем, как правильно использовать битрикс в реальных задачах.
Контейнер
[TOC]
Данный раздел посвящен принципиально новому подходу для работы с основными CRM сущностями. В рамках реализации Смарт-процессов разработчики решили не просто реализовать новые возможности, но так же и переосмыслить старые идеи. В основе нового подхода лежит реализация дополнительных требований:
1. Уменьшение дублирования кода.
2. Уменьшение связности классов.
3. Покрытие тестами.
Совершенно очевидно, что сложность в изучении модуля возросла многократно, однако это компенсируется единообразием.
Планируется что изучив общий подход разработчик сможет по образу и подобию работать и с другими сущностями CRM.
>На момент написания раздела механизм используется для сущностей смарт-процессы, счета и предложение. Поддержка остальных сущностей является экспериментальной. Что это значит? Сейчас поддержка нового API является добровольной и работает в пилотном режиме, но в будущем, когда все несовместимости будут устранены этот механизм будет включен для всех сущностей принудительно, а старое поведение будет убрано из продукта.
Концепция
В основу нового api заложены такие паттерны как: локатор сервисов, абстрактная фабрика), фабрика), фасад) и одиночка (singleton)), поэтому крайне желательно быть с ними знакомым.
Точкой входа в весь механизм является контейнер — это singleton-класс который с одной стороны обеспечивает простой доступ к сервисам из локатора сервисов, а с другой стороны является абстрактной фабрикой для фабрик по работе с сущностями.
Мы употребили много не совсем очевидных слов поэтому давайте немного разберемся в терминологии.
Сервис — объект, как правило, в единственном экземпляре, который выполняет небольшую обособленную часть логики. Поскольку они строго следуют принципу единой ответственности в модуле crm их довольно много. В продукте используется большое количество сервисов и ознакомиться с ними вы сможете в документации по продукту (см. полезные ссылки).
Фабрика по работе с сущностью это класс для определенной сущности, который описывает некоторую специфичную для конкретного типа особенности — например набор полей, поведение и прочее.
>Здесь и далее под словом «тип» подразумевается «тип сущности в рамках CRM», например «Лид», «Сделка» и т.д. К ним же относятся «Смарт-процессы».
Нам с вами известно, что каждая сущность имеет свои особенности работы и что нельзя просто так изменить строчку в базе данных — сохранение это сложная операция, которая затрагивает различные действия. Поэтому в продукте появилась принципиально новая механика — Операция. Это конфигурируемый класс, который содержит обработчики всей логики для выполнения определенного действия.
Давайте разберемся на примере — наша задача изменить существующую сделку. Идентификатор сделки известен, изменяемые поля и новые значения нам известны. Что нам нужно сделать?
1. Из контейнера получить фабрику по работе с сущностью.
2. Из фабрики по работе с сущностью получить изменяемый элемент (объект элемента).
3. Изменить необходимые поля элемента.
4. Из фабрики по работе с сущностью получить операцию изменения.
5. Передать в операцию изменения уже измененный элемент.
6. Запустить операцию изменения.
Полезные ссылки
Новое API в документации 1С-Битрикс
Локатор сервисов
Сервисы
💡 Экспертное мнение и рекомендации
Ключевые выводы по теме «Контейнер: Подробное руководство»:
Использование современных стандартов D7 при работе с битрикс позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru