abstract class MemberMetadata

Hierarchy

Expanded class hierarchy of MemberMetadata

1 file declares its use of MemberMetadata
MemberMetadataTest.php in drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Mapping/MemberMetadataTest.php

File

drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Mapping/MemberMetadata.php, line 21

Namespace

Symfony\Component\Validator\Mapping
View source
abstract class MemberMetadata extends ElementMetadata implements PropertyMetadataInterface, ClassBasedInterface {
  public $class;
  public $name;
  public $property;
  public $cascaded = false;
  public $collectionCascaded = false;
  public $collectionCascadedDeeply = false;
  private $reflMember = array();

  /**
   * Constructor.
   *
   * @param string $class    The name of the class this member is defined on
   * @param string $name     The name of the member
   * @param string $property The property the member belongs to
   */
  public function __construct($class, $name, $property) {
    $this->class = $class;
    $this->name = $name;
    $this->property = $property;
  }
  public function accept(ValidationVisitorInterface $visitor, $value, $group, $propertyPath, $propagatedGroup = null) {
    $visitor
      ->visit($this, $value, $group, $propertyPath);
    if ($this
      ->isCascaded()) {
      $visitor
        ->validate($value, $propagatedGroup ?: $group, $propertyPath, $this
        ->isCollectionCascaded(), $this
        ->isCollectionCascadedDeeply());
    }
  }

  /**
   * {@inheritDoc}
   */
  public function addConstraint(Constraint $constraint) {
    if (!in_array(Constraint::PROPERTY_CONSTRAINT, (array) $constraint
      ->getTargets())) {
      throw new ConstraintDefinitionException(sprintf('The constraint %s cannot be put on properties or getters', get_class($constraint)));
    }
    if ($constraint instanceof Valid) {
      $this->cascaded = true;

      /* @var Valid $constraint */
      $this->collectionCascaded = $constraint->traverse;
      $this->collectionCascadedDeeply = $constraint->deep;
    }
    else {
      parent::addConstraint($constraint);
    }
    return $this;
  }

  /**
   * Returns the names of the properties that should be serialized
   *
   * @return array
   */
  public function __sleep() {
    return array_merge(parent::__sleep(), array(
      'class',
      'name',
      'property',
      'cascaded',
    ));
  }

  /**
   * Returns the name of the member
   *
   * @return string
   */
  public function getName() {
    return $this->name;
  }

  /**
   * Returns the class this member is defined on
   *
   * @return string
   */
  public function getClassName() {
    return $this->class;
  }

  /**
   * Returns the name of the property this member belongs to
   *
   * @return string The property name
   */
  public function getPropertyName() {
    return $this->property;
  }

  /**
   * Returns whether this member is public
   *
   * @param object|string $objectOrClassName The object or the class name
   *
   * @return Boolean
   */
  public function isPublic($objectOrClassName) {
    return $this
      ->getReflectionMember($objectOrClassName)
      ->isPublic();
  }

  /**
   * Returns whether this member is protected
   *
   * @param object|string $objectOrClassName The object or the class name
   *
   * @return Boolean
   */
  public function isProtected($objectOrClassName) {
    return $this
      ->getReflectionMember($objectOrClassName)
      ->isProtected();
  }

  /**
   * Returns whether this member is private
   *
   * @param object|string $objectOrClassName The object or the class name
   *
   * @return Boolean
   */
  public function isPrivate($objectOrClassName) {
    return $this
      ->getReflectionMember($objectOrClassName)
      ->isPrivate();
  }

  /**
   * Returns whether objects stored in this member should be validated
   *
   * @return Boolean
   */
  public function isCascaded() {
    return $this->cascaded;
  }

  /**
   * Returns whether arrays or traversable objects stored in this member
   * should be traversed and validated in each entry
   *
   * @return Boolean
   */
  public function isCollectionCascaded() {
    return $this->collectionCascaded;
  }

  /**
   * Returns whether arrays or traversable objects stored in this member
   * should be traversed recursively for inner arrays/traversable objects
   *
   * @return Boolean
   */
  public function isCollectionCascadedDeeply() {
    return $this->collectionCascadedDeeply;
  }

  /**
   * Returns the Reflection instance of the member
   *
   * @param object|string $objectOrClassName The object or the class name
   *
   * @return object
   */
  public function getReflectionMember($objectOrClassName) {
    $className = is_string($objectOrClassName) ? $objectOrClassName : get_class($objectOrClassName);
    if (!isset($this->reflMember[$className])) {
      $this->reflMember[$className] = $this
        ->newReflectionMember($objectOrClassName);
    }
    return $this->reflMember[$className];
  }

  /**
   * Creates a new Reflection instance for the member
   *
   * @param object|string $objectOrClassName The object or the class name
   *
   * @return mixed Reflection class
   */
  protected abstract function newReflectionMember($objectOrClassName);

}

Members

Namesort descending Modifiers Type Description Overrides
ElementMetadata::$constraints public property
ElementMetadata::$constraintsByGroup public property
ElementMetadata::findConstraints public function Returns the constraints of the given group and global ones (* group).
ElementMetadata::getConstraints public function Returns all constraints of this element.
ElementMetadata::hasConstraints public function Returns whether this element has any constraints.
ElementMetadata::__clone public function Clones this object.
MemberMetadata::$cascaded public property
MemberMetadata::$class public property
MemberMetadata::$collectionCascaded public property
MemberMetadata::$collectionCascadedDeeply public property
MemberMetadata::$name public property
MemberMetadata::$property public property
MemberMetadata::$reflMember private property
MemberMetadata::accept public function Implementation of the Visitor design pattern. Overrides MetadataInterface::accept
MemberMetadata::addConstraint public function Adds a constraint to this element. Overrides ElementMetadata::addConstraint
MemberMetadata::getClassName public function Returns the class this member is defined on Overrides ClassBasedInterface::getClassName
MemberMetadata::getName public function Returns the name of the member
MemberMetadata::getPropertyName public function Returns the name of the property this member belongs to Overrides PropertyMetadataInterface::getPropertyName
MemberMetadata::getReflectionMember public function Returns the Reflection instance of the member
MemberMetadata::isCascaded public function Returns whether objects stored in this member should be validated
MemberMetadata::isCollectionCascaded public function Returns whether arrays or traversable objects stored in this member should be traversed and validated in each entry
MemberMetadata::isCollectionCascadedDeeply public function Returns whether arrays or traversable objects stored in this member should be traversed recursively for inner arrays/traversable objects
MemberMetadata::isPrivate public function Returns whether this member is private
MemberMetadata::isProtected public function Returns whether this member is protected
MemberMetadata::isPublic public function Returns whether this member is public
MemberMetadata::newReflectionMember abstract protected function Creates a new Reflection instance for the member 3
MemberMetadata::__construct public function Constructor. 2
MemberMetadata::__sleep public function Returns the names of the properties that should be serialized Overrides ElementMetadata::__sleep
PropertyMetadataInterface::getPropertyValue public function Extracts the value of the property from the given container. 4