РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1036 of 1361 menu

Метод setNormalizer

Метод setNormalizer класса OptionsResolver позволяет назначить опции callback-функцию, которая будет вызываться во время разрешения опций и приводить переданное значение к нужному виду. Первым параметром передаётся имя опции, вторым - замыкание с сигнатурой function (Options $options, $value): mixed. Замыкание получает экземпляр Options с остальными разрешёнными опциями и текущее значение, а возвращает уже нормализованное значение. Нормализатор применяется после проверки типов и значений, но до вызова resolve.

Синтаксис

$resolver->setNormalizer(string $option, callable $normalizer)

Пример

Давайте зададим опцию text и нормализатор, который приводит строку к верхнему регистру:

<?php use SymfonyComponentOptionsResolverOptionsResolver; $resolver = new OptionsResolver(); $resolver->setDefault('text', 'hello'); $resolver->setNormalizer('text', function ($options, $value) { return strtoupper($value); }); $res = $resolver->resolve(['text' => 'abcde']); echo $res['text']; ?>

Результат выполнения кода:

"ABCDE"

Пример

Давайте нормализуем опцию count, приводя любое значение к целому числу:

<?php use SymfonyComponentOptionsResolverOptionsResolver; $resolver = new OptionsResolver(); $resolver->setDefault('count', 0); $resolver->setAllowedTypes('count', ['int', 'string']); $resolver->setNormalizer('count', function ($options, $value) { return (int) $value; }); $res = $resolver->resolve(['count' => '42']); var_dump($res['count']); ?>

Результат выполнения кода:

42

Пример

Давайте используем нормализатор, который зависит от другой опции prefix:

<?php use SymfonyComponentOptionsResolverOptionsResolver; $resolver = new OptionsResolver(); $resolver->setDefault('prefix', 'user_'); $resolver->setDefault('name', 'abcde'); $resolver->setNormalizer('name', function ($options, $value) { return $options['prefix'] . $value; }); $res = $resolver->resolve(['name' => 'hello']); echo $res['name']; ?>

Результат выполнения кода:

"user_hello"

Смотрите также

  • класс OptionsResolver,
    который управляет списком опций
  • метод setDefaults,
    который задаёт значения по умолчанию
  • метод setAllowedTypes,
    который ограничивает типы значений опции
  • метод resolve,
    который возвращает итоговый массив опций
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить