0

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

像这样的东西:

use Symfony\Component\Validator\Constraints as Assert;

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

那么如果 $argument 的值与给定的选项不同,验证会抛出异常吗?

4

1 回答 1

3

不幸的是,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 不支持这一点会更好。程序员在阅读代码时通常会忽略注释和注释,它们通常会过时,导致代码更难调试。

于 2017-11-08T08:50:09.797 回答