Блог Горошко Андрея Bitrix24,PHP Контейнер: Подробное руководство

Контейнер: Подробное руководство

Каждый 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 и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Как использовать метод SDK crm.requisite.bankdetail.update в Битрикс24Как использовать метод SDK crm.requisite.bankdetail.update в Битрикс24

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как использовать метод SDK crm.requisite.bankdetail.update в Битрикс24», разберем

Опубликовать папку сайта landing.site.publicationFolderОпубликовать папку сайта landing.site.publicationFolder

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Опубликовать папку сайта landing.site.publicationFolder», проанализируем лучшие практики и

Внедрение Битрикс24 для консалтингового и тренингового центраВнедрение Битрикс24 для консалтингового и тренингового центра

Профессиональная настройка и внедрение Битрикс24 CRM позволяет систематизировать работу отдела продаж, исключить потерю лидов и автоматизировать ключевые бизнес-процессы компании. Услуга «Внедрение Битрикс24 для консалтингового и тренингового центра» обеспечивает учет корпоративных