Есть ли способ применить ограничения Symfony Validator к аргументам метода?
Что-то вроде этого:
use Symfony\Component\Validator\Constraints as Assert;
class acmeClass
{
/**
* @param $argument
* @Assert\Choice({"YES", "NO"})
*/
public funciton foo($argument)
{
/..
}
}
Так что, если $ аргумент имеет значение, отличное от заданного, проверка выдает исключение?
К сожалению, это не поддерживается платформой 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 не поддерживает это. Аннотации и комментарии в целом часто игнорируются программистами при чтении кода, и их часто можно оставить устаревшими, что затрудняет отладку кода.
Других решений пока нет …