在方法参数中使用 Symfony 验证器
Use Symfony validator in Method arguments
有没有办法将 Symfony 验证器约束应用于方法的参数?
像这样:
use Symfony\Component\Validator\Constraints as Assert;
class acmeClass
{
/**
* @param $argument
* @Assert\Choice({"YES", "NO"})
*/
public funciton foo($argument)
{
/..
}
}
所以如果 $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 不支持这个更好。程序员在阅读代码时通常会忽略注解和注释,而且它们通常会过时,导致代码更难调试。
有没有办法将 Symfony 验证器约束应用于方法的参数?
像这样:
use Symfony\Component\Validator\Constraints as Assert;
class acmeClass
{
/**
* @param $argument
* @Assert\Choice({"YES", "NO"})
*/
public funciton foo($argument)
{
/..
}
}
所以如果 $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 不支持这个更好。程序员在阅读代码时通常会忽略注解和注释,而且它们通常会过时,导致代码更难调试。