Standalone类中的Symfony2 Validator约束

时间:2016-01-05 11:56:29

标签: php validation symfony

我正在创建一个在其构造函数中接受3个参数的类,并且想要验证该属性是否属于某种类型。假设我实例化我的类并为对象提供参数类型“string”以及相应的属性名称及其值。下面是我想要添加验证的类。

use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints as Assert;

class SingleValueVariableBar implements VariableBarInterface
{
  protected $type;
  protected $property;
  protected $value;

  public function __construct($type, $property, $value)
  {
    $this->type      = $type;
    $this->property  = $property;
    $this->value     = $value;
   }

  /** 
   @Override Implements the VariableBarInterface interface
  */
  public function get($property)
  {
      if(!property_exists($this, $property)))
       throw new \Exception("The property $property does not exists.");
      return $this->{$property};
   }

  public static function loadValidatorMetadata(ClassMetadata $metadata)
  {
    $metadata->addPropertyConstraint('value', new Assert\Type(array(
      "??" => "??"
      )));
   }
 }

假设我创建了一个类的实例,如下所示:

<?php

   $svvb = new SingleValueVariableBar("string", "name", "Luyanda");

现在我的类应该验证name属性是否实际上是一个字符串。如果第一个参数被称为一个对象,然后我在最后一个参数中传递一个字符串,那么验证应该失败,因为最后一个参数是一个字符串。

我需要这个尽可能的动态。我试图检查互联网如何使用类型约束关于其父类构造函数,即约束。

1 个答案:

答案 0 :(得分:0)

我终于通过将所有属性设置为静态来使其工作,然后按如下方式初始化我的验证器对象:

<?php

 $metadata->addPropertyConstraint('value', new AssertType(self::$type));

这非常有效,我可以根据我的要求对参数进行验证。