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

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-2021, «1С-Битрикс», 2021
Наверх