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

Метод setDefaults

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

Синтаксис

public function setDefaults(array $defaults): static

Пример

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

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

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

["name" => "user", "age" => 25]

Пример

Давайте переопределим опцию name при вызове resolve:

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

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

["name" => "abcde", "age" => 25]

Пример

Давайте добавим опции по умолчанию в два вызова setDefaults:

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

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

["name" => "user", "age" => 25]

Пример

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

<?php namespace AppService; use SymfonyComponentOptionsResolverOptionsResolver; class ArticleService { public function handle(array $options): array { $resolver = new OptionsResolver(); $resolver->setDefaults([ 'title' => 'article', 'published' => false, ]); return $resolver->resolve($options); } } ?>

Давайте вызовем сервис и передадим только опцию title:

<?php use AppServiceArticleService; $service = new ArticleService(); $res = $service->handle(['title' => 'abcde']); print_r($res); ?>

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

["title" => "abcde", "published" => false]

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

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