有没有办法将Symfony Validator约束应用于方法的参数?
这样的事情:
use Symfony\Component\Validator\Constraints as Assert;
class acmeClass
{
/**
* @param $argument
* @Assert\Choice({"YES", "NO"})
*/
public funciton foo($argument)
{
/..
}
}
因此,如果$参数的值与给定的选项不同,验证会抛出异常吗?
答案 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不支持这一点会更好。程序员在阅读代码时经常会忽略注释和注释,并且它们通常会被遗忘,导致代码调试更加困难。