Метод setRequired
Метод setRequired класса OptionsResolver
помечает указанную опцию как обязательную. Если при
вызове метода resolve обязательная опция не была
передана, Symfony выбросит исключение
MissingOptionsException. Это удобно использовать
для параметров, без которых работа функции или сервиса
невозможна.
Первым параметром метод принимает имя опции, которую нужно сделать обязательной. Можно передать как одну строку, так и массив строк, чтобы пометить сразу несколько опций.
Синтаксис
<?php
public function setRequired(string|array $option): static
?>
Пример
Давайте создадим объект OptionsResolver и
поместим опцию name как обязательную:
<?php
namespace AppService;
use SymfonyComponentOptionsResolverOptionsResolver;
class ArticleService
{
public function handle(array $options): array
{
$resolver = new OptionsResolver();
$resolver->setRequired('name');
$res = $resolver->resolve($options);
return $res;
}
}
?>
Вызовем метод handle с корректными данными:
<?php
$service = new ArticleService();
$res = $service->handle(['name' => 'article']);
print_r($res);
?>
Результат выполнения кода:
["name" => "article"]
Пример
А теперь вызовем метод handle без обязательной
опции name и получим исключение:
<?php
$service = new ArticleService();
$res = $service->handle([]);
print_r($res);
?>
Результат выполнения кода:
The required option "name" is missing.
Пример
Метод setRequired умеет принимать массив имён,
чтобы пометить несколько опций сразу:
<?php
namespace AppService;
use SymfonyComponentOptionsResolverOptionsResolver;
class ArticleService
{
public function handle(array $options): array
{
$resolver = new OptionsResolver();
$resolver->setRequired(['name', 'text']);
$res = $resolver->resolve($options);
return $res;
}
}
?>
Вызовем метод handle с двумя обязательными опциями:
<?php
$service = new ArticleService();
$res = $service->handle([
'name' => 'article',
'text' => 'abcde',
]);
print_r($res);
?>
Результат выполнения кода:
["name" => "article", "text" => "abcde"]
Смотрите также
-
класс
OptionsResolver,
который управляет опциями конфигурации -
метод
setDefaults,
который задаёт значения по умолчанию -
метод
setDefined,
который разрешает использовать опцию -
метод
isRequired,
который проверяет, обязательна ли опция