感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
ClassMetadata
类对一个给定的类的“全部已配置约束”进行呈现和管理。
Validator组件可以验证public, protected或private属性。下例演示了如何验证 Author
的 $firstName
属性令其至少包含三个字符:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // ...
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
private $firstName;
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('firstName', new Assert\NotBlank());
$metadata->addPropertyConstraint(
'firstName',
new Assert\Length(array("min" => 3))
);
}
} |
约束(constraints)也可以被用在返回值或是任何public getter 方法上,即方法名以get
、has
或is
开头的方法。这个功能允许你动态地验证对象。
假设,出于安全原因,你希望验证password字段“不能与用户的第一个名字一样”,创建一个名为 isPasswordSafe
的public方法,以定义自定义验证:
1 2 3 4 | public function isPasswordSafe()
{
return $this->firstName !== $this->password;
} |
然后,把Validator组件的配置信息添加到这个类中:
1 2 3 4 5 6 7 8 9 10 11 12 13 | // ...
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addGetterConstraint('passwordSafe', new Assert\IsTrue(array(
'message' => 'The password cannot match your first name',
)));
}
} |
某些约束能够让你验证整个对象。例如,Callback 约束就是一个可以应用到类自身的约束。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。