Блог Горошко Андрея 1C-Битрикс Работа с коллекциями данных: Классы Bitrix\Main\Type\Dictionary и ParameterDictionary

Работа с коллекциями данных: Классы Bitrix\Main\Type\Dictionary и ParameterDictionary

В ядре D7 для работы с наборами данных (параметрами запроса, опциями, конфигурациями) вместо обычных массивов часто используются объекты-коллекции.

Базовым классом для них является \Bitrix\Main\Type\Dictionary.

Зачем это нужно?

  1. Удобство доступа: Методы get() и set() вместо квадратных скобок.
  2. Безопасность: Методы могут содержать логику фильтрации или валидации.
  3. Гибкость: Объект можно передавать по ссылке, и он реализует интерфейсы ArrayAccess, Iterator, Countable.

1. Bitrix\Main\Type\Dictionary

Это базовая обертка над массивом.

use Bitrix\Main\Type\Dictionary;

$data = [
    'name' => 'Ivan',
    'age' => 25
];

$dict = new Dictionary($data);

// Доступ как к массиву
echo $dict['name']; 

// Доступ через метод (безопасно, если ключа нет)
echo $dict->get('city') ?? 'Unknown'; 

// Изменение
$dict->set('city', 'Moscow');

// Перебор
foreach ($dict as $key => $value) {
    echo "$key: $value<br>";
}

2. Bitrix\Main\Type\ParameterDictionary

Этот класс наследуется от Dictionary и используется в объекте Request (для GET, POST параметров). Его особенность — метод getRaw().

use Bitrix\Main\Type\ParameterDictionary;

$params = new ParameterDictionary([
    'html' => '<b>Bold</b>'
]);

// Если бы это был Request, метод get() мог бы применить htmlspecialchars
echo $params->get('html'); 

// Метод getRaw() всегда возвращает исходное "сырое" значение
echo $params->getRaw('html');

Где вы это уже видели?

$request = \Bitrix\Main\Context::getCurrent()->getRequest();
// $request->getQueryList() возвращает именно ParameterDictionary
$getParams = $request->getQueryList();
$value = $getParams->get('id');

Вывод:
Используйте Dictionary, когда вам нужно передать набор параметров в функцию или класс.

Это делает сигнатуру методов более строгой («Я жду объект Dictionary, а не просто array»), а код — более читаемым и объектно-ориентированным.

Bitrix Dictionary, ParameterDictionary, работа с массивами D7, ArrayAccess, итератор, коллекция параметров, getRaw.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Zhiznennyy Cikl Zaprosa: Руководство разработчикаZhiznennyy Cikl Zaprosa: Руководство разработчика

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Zhiznennyy Cikl Zaprosa: Руководство разработчика». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.

Разработка интернет-магазина с автоматическим динамическим ценообразованиемРазработка интернет-магазина с автоматическим динамическим ценообразованием

Реализация проекта «Разработка интернет-магазина с автоматическим динамическим ценообразованием» направлена на создание технологического преимущества компании, масштабирование продаж и обеспечение бесперебойной работы под высокими нагрузками. автоматическая корректировка розничных цен в зависимости от

Оптимизация работы модуля инфоблоков (IBlock) и переход на свойства типа «Справочник»Оптимизация работы модуля инфоблоков (IBlock) и переход на свойства типа «Справочник»

Высокая скорость загрузки сайта и безупречная серверная безопасность — обязательные требования для успешного коммерческого проекта на 1С-Битрикс. Услуга «Оптимизация работы модуля инфоблоков (IBlock) и переход на свойства типа «Справочник»» обеспечивает