Метод setDefault класса OptionsResolver
Метод setDefault класса OptionsResolver
устанавливает значение по умолчанию для одного
параметра. Первым параметром передаётся имя
опции, вторым - её значение по умолчанию. Если
пользователь не передаст эту опцию при вызове
метода resolve, будет использовано
указанное значение.
Синтаксис
public function setDefault(string $option, mixed $value): static
Пример
Давайте зададим значение по умолчанию для опции name:
<?php
namespace App\Service;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ArticleService
{
public function configure(): array
{
$resolver = new OptionsResolver();
$resolver->setDefault('name', 'article');
$resolver->setDefault('count', 5);
return $resolver->resolve();
}
}
?>
Результат выполнения кода:
["name" => "article", "count" => 5]
Пример
Если опция передана пользователем, значение по умолчанию переопределяется:
<?php
namespace App\Service;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ArticleService
{
public function configure(): array
{
$resolver = new OptionsResolver();
$resolver->setDefault('name', 'article');
$resolver->setDefault('count', 5);
return $resolver->resolve(['name' => 'hello']);
}
}
?>
Результат выполнения кода:
["name" => "hello", "count" => 5]
Пример
Значением по умолчанию может быть замыкание, которое вычислит его лениво:
<?php
namespace App\Service;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ArticleService
{
public function configure(): array
{
$resolver = new OptionsResolver();
$resolver->setDefault('user', function (OptionsResolver $resolver): void {
$resolver->setDefault('name', 'abcde');
$resolver->setDefault('active', true);
});
return $resolver->resolve();
}
}
?>
Результат выполнения кода:
["user" => ["name" => "abcde", "active" => true]]
Смотрите также
-
метод
setDefaults,
который задаёт сразу несколько значений по умолчанию -
метод
setRequired,
который делает опцию обязательной -
метод
setAllowedTypes,
который ограничивает тип значения опции -
метод
resolve,
который возвращает итоговый массив опций