Блог Горошко Андрея 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.

Мой рейтинг:

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

Related Post

Слайдер Битрикс (SidePanel): Открытие компонентов и страниц в боковой панелиСлайдер Битрикс (SidePanel): Открытие компонентов и страниц в боковой панели

Средний рейтинг Еще нет оценок Боковая панель (слайдер) — это стандарт де-факто в интерфейсах Битрикс24. Она позволяет открывать формы редактирования, детальные карточки и отчеты «поверх» текущей страницы, не теряя контекст.

Bitrix\Main\Update\Stepper: Обработка больших данных по шагам с прогресс-баромBitrix\Main\Update\Stepper: Обработка больших данных по шагам с прогресс-баром

Средний рейтинг Еще нет оценок Когда нужно обработать 100 000 элементов или импортировать огромный файл, обычный скрипт упадет с ошибкой max_execution_time. Решение — выполнять задачу порциями (по шагам). В Битрикс для

Чем отличается ядро D7 bitrix и bitrix старое ядроЧем отличается ядро D7 bitrix и bitrix старое ядро

Средний рейтинг Еще нет оценок D7 Bitrix — это новое ядро Битрикс, которое было создано для замены старого ядра. D7 Bitrix является новым ядром разработки, которое было введено в версии