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

Метод setDefined

Метод setDefined класса OptionsResolver регистрирует опцию как известную и разрешённую, но не задаёт для неё значение по умолчанию. Это значит, что опция может быть передана в resolve, но если она не передана, то в итоговом массиве её не будет. Первым параметром передаётся имя опции, вторым - имя опции в виде строки или массив имён.

Метод полезен, когда нужно ограничить список допустимых опций, но при этом не навязывать значение по умолчанию. Попытка передать неизвестную опцию вызовет исключение.

Синтаксис

public function setDefined(string|array $option): static

Пример

Давайте определим опцию name как допустимую:

<?php use SymfonyComponentOptionsResolverOptionsResolver; $resolver = new OptionsResolver(); $resolver->setDefined('name'); $res = $resolver->resolve(['name' => 'abcde']); echo $res['name']; ?>

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

"abcde"

Пример

Если опция не передана, она просто отсутствует в результате, и ошибка не возникает:

<?php use SymfonyComponentOptionsResolverOptionsResolver; $resolver = new OptionsResolver(); $resolver->setDefined('name'); $res = $resolver->resolve([]); var_dump($res); ?>

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

[]

Пример

Можно определить сразу несколько опций, передав массив имён:

<?php use SymfonyComponentOptionsResolverOptionsResolver; $resolver = new OptionsResolver(); $resolver->setDefined(['name', 'age']); $res = $resolver->resolve([ 'name' => 'abcde', 'age' => 25, ]); echo $res['name'] . ' ' . $res['age']; ?>

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

"abcde 25"

Пример

Если передать опцию, которая не была объявлена через setDefined или другие методы, будет выброшено исключение:

<?php use SymfonyComponentOptionsResolverOptionsResolver; $resolver = new OptionsResolver(); $resolver->setDefined('name'); $res = $resolver->resolve(['age' => 25]); ?>

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

SymfonyComponentOptionsResolverExceptionUndefinedOptionsException

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

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