在Method参数中使用Symfony验证器

时间:2017-11-08 08:09:17

标签: php symfony symfony-validator

有没有办法将Symfony Validator约束应用于方法的参数?

这样的事情:

use Symfony\Component\Validator\Constraints as Assert;

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

因此,如果$参数的值与给定的选项不同,验证会抛出异常吗?

1 个答案:

答案 0 :(得分:3)

不幸的是Symfony框架不支持。

您有两个选择:

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不支持这一点会更好。程序员在阅读代码时经常会忽略注释和注释,并且它们通常会被遗忘,导致代码调试更加困难。