Документация для разработчиков
Темная тема

Converter

\Bitrix\Main\Engine\Response\Converter - класс, выполняющий конвертацию строк или массивов, содержащих строки.

При написании backend API часто требуется соблюдать формат и стилистику данных, которые уходят на frontend. Например, преобразовать все ключи из snake_case в camelCase. Или сделать иные преобразования.

Чтобы не делать это "руками", можно использовать класс Response\Converter, который умеет преобразовывать:

  • camelCase -> snake_case Response\Converter::TO_SNAKE
  • snake_case -> camelCase Response\Converter::TO_CAMEL
  • Response\Converter::TO_SNAKE_DIGIT
  • some string -> SOME STRING Response\Converter::TO_UPPER
  • SOME STRING -> some string Response\Converter::TO_LOWER
  • SOME STRING -> sOME STRING Response\Converter::LC_FIRST
  • some string -> Some string Response\Converter::UC_FIRST
  • Применять преобразования к ключам ассоциативного массива Response\Converter::KEYS
  • Применять преобразования к значениям массива Response\Converter::VALUES
  • Выполнять преобразования рекурсивно для массива и вложенных массивов Response\Converter::RECURSIVE

Методы

Метод Описание С версии
__construct($format)
Метод-конструктор. Параметры:
  • $format {int} Перечисление необходимых преобразований. Для этого используются битовые маски. Доступные варианты можно найти в константах класса \Bitrix\Main\Engine\Response\Converter.
toJson()
Создает объект, сразу устанавливая формат для преобразования в camelCase массив \Bitrix\Main\Engine\Response\Converter::OUTPUT_JSON_FORMAT.
process($data)
Параметр: $data {string|array} Данные, над которыми необходимо выполнить преобразования.
getFormat()
int. Получение текущего формата, в котором перечислены преобразования.
setFormat($format)
Параметр: $format {int} Перечисление необходимых преобразований. Для этого используются битовые маски. Доступные варианты можно найти в константах класса \Bitrix\Main\Engine\Response\Converter.

Пример

use \Bitrix\Main\Engine\Response\Converter;

$converter = new Converter(Converter::LC_FIRST | Converter::TO_CAMEL);
echo $converter->process('la_la_land'); //laLaLand

$converter = new Converter(Converter::OUTPUT_JSON_FORMAT);
$converter->process([
	'CATEGORIES' => [
		[
			'ID' => 1,
			'NAME' => 'Foods',
		],
		[
			'ID' => 12,
			'NAME' => 'Auto',
		]
	]
]);
/**
[
	'categories' => [
		[
			'id' => 1,
			'name' => 'foods',
		],
		[
			'id' => 12,
			'name' => 'auto',
		],
	],
]
**/

$converter = new Converter(Converter::TO_SNAKE_DIGIT | Converter::VALUES | Converter::KEYS | Converter::RECURSIVE);
$converter->process([
	'property109',
	'props' => [
		'element1' => [
			'property210'
		],
	]
]);
/**
[
'property_109',
'props' => [
	'element_1' => [
		'property_210'
	],
];
**/ 

© «Битрикс», 2001-2024, «1С-Битрикс», 2024