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

Метод setAllowedValues

Метод setAllowedValues класса OptionsResolver ограничивает множество значений, которые может принимать опция. Первым параметром передаётся имя опции, вторым - массив допустимых значений или замыкание для их проверки. Если переданное значение не входит в список, выбрасывается исключение InvalidOptionsException.

Синтаксис

setAllowedValues(string $option, array|Closure $allowedValues): static

Пример

Давайте разрешим опции format только три значения:

<?php namespace AppService; use SymfonyComponentOptionsResolverOptionsResolver; class ArticleService { public function configure(): array { $resolver = new OptionsResolver(); $resolver->setDefaults(['format' => 'html']); $resolver->setAllowedValues('format', ['html', 'json', 'xml']); return $resolver->resolve(['format' => 'json']); } } ?>

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

["format" => "json"]

Пример

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

<?php namespace AppService; use SymfonyComponentOptionsResolverOptionsResolver; class ArticleService { public function configure(): array { $resolver = new OptionsResolver(); $resolver->setDefaults(['format' => 'html']); $resolver->setAllowedValues('format', ['html', 'json', 'xml']); return $resolver->resolve(['format' => 'csv']); } } ?>

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

SymfonyComponentOptionsResolverExceptionInvalidOptionsException: The option "format" with value "csv" is invalid.

Пример

Давайте используем замыкание для проверки значения:

<?php namespace AppService; use SymfonyComponentOptionsResolverOptionsResolver; class ArticleService { public function configure(): array { $resolver = new OptionsResolver(); $resolver->setDefaults(['limit' => 10]); $resolver->setAllowedValues('limit', function ($value) { return $value >= 1 && $value <= 100; }); return $resolver->resolve(['limit' => 50]); } } ?>

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

["limit" => 50]

Пример

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

<?php namespace AppService; use SymfonyComponentOptionsResolverOptionsResolver; class ArticleService { public function configure(): array { $resolver = new OptionsResolver(); $resolver->setDefaults([ 'status' => 'draft', 'priority' => 1, ]); $resolver->setAllowedValues('status', ['draft', 'published', 'archived']); $resolver->setAllowedValues('priority', [1, 2, 3, 4, 5]); return $resolver->resolve([ 'status' => 'published', 'priority' => 3, ]); } } ?>

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

["status" => "published", "priority" => 3]

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

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