Используйте валидатор Symfony в аргументах метода

Есть ли способ применить ограничения Symfony Validator к аргументам метода?

Что-то вроде этого:

use Symfony\Component\Validator\Constraints as Assert;

class acmeClass
{
/**
* @param $argument
* @Assert\Choice({"YES", "NO"})
*/
public funciton foo($argument)
{
/..
}
}

Так что, если $ аргумент имеет значение, отличное от заданного, проверка выдает исключение?

0

Решение

К сожалению, это не поддерживается платформой Symfony.

У вас есть 2 варианта:

1). Подтвердите перед звонком foo():

$errors = $validator->validate($argument, $constraint);
if (count($errors) > 0) {
//throw some exception?
}

$acmeClassObj->foo($argument);

2). Подтвердить внутри foo() сам:

class acmeClass
{
public function foo($argument)
{
$errors = $validator->validate($argument, $constraint);
if (count($errors) > 0) {
//throw some exception?
}

//do something here with $argument
}
}

Честно говоря, я думаю, что лучше, если Symfony не поддерживает это. Аннотации и комментарии в целом часто игнорируются программистами при чтении кода, и их часто можно оставить устаревшими, что затрудняет отладку кода.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]