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

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

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

use Symfony\Component\Validator\Constraints as Assert;

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

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

1 ответ

Решение

К сожалению, это не поддерживается платформой 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 не поддерживает это. Аннотации и комментарии в целом часто игнорируются программистами при чтении кода, и их часто можно оставить устаревшими, что затрудняет отладку кода.

Другие вопросы по тегам