感谢你来到这里
                我真的很激动
                盼望,能有你的支持
            捐赠可扫描二维码转账支付
                 
                    支付宝扫一扫付款
 
                    微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
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 创作共用授权。