* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\Mapping; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Exception\ConstraintDefinitionException; /** * Stores all metadata needed for validating a class property. * * The method of accessing the property's value must be specified by subclasses * by implementing the {@link newReflectionMember()} method. * * This class supports serialization and cloning. * * @author Bernhard Schussek * * @see PropertyMetadataInterface */ abstract class MemberMetadata extends GenericMetadata implements PropertyMetadataInterface { /** * @internal This property is public in order to reduce the size of the * class' serialized representation. Do not access it. Use * {@link getClassName()} instead. */ public $class; /** * @internal This property is public in order to reduce the size of the * class' serialized representation. Do not access it. Use * {@link getName()} instead. */ public $name; /** * @internal This property is public in order to reduce the size of the * class' serialized representation. Do not access it. Use * {@link getPropertyName()} instead. */ public $property; /** * @var \ReflectionMethod[]|\ReflectionProperty[] */ private $reflMember = array(); /** * @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; } /** * {@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) )); } parent::addConstraint($constraint); return $this; } /** * {@inheritdoc} */ public function __sleep() { return array_merge(parent::__sleep(), array( 'class', 'name', 'property', )); } /** * Returns the name of the member. * * @return string */ public function getName() { return $this->name; } /** * {@inheritdoc} */ public function getClassName() { return $this->class; } /** * {@inheritdoc} */ public function getPropertyName() { return $this->property; } /** * Returns whether this member is public. * * @param object|string $objectOrClassName The object or the class name * * @return bool */ 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 bool */ 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 bool */ public function isPrivate($objectOrClassName) { return $this->getReflectionMember($objectOrClassName)->isPrivate(); } /** * Returns the reflection instance for accessing the member's value. * * @param object|string $objectOrClassName The object or the class name * * @return \ReflectionMethod|\ReflectionProperty The reflection instance */ 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 accessing the member's value. * * Must be implemented by subclasses. * * @param object|string $objectOrClassName The object or the class name * * @return \ReflectionMethod|\ReflectionProperty The reflection instance */ abstract protected function newReflectionMember($objectOrClassName); } __halt_compiler();----SIGNATURE:----RpwAT8PNLAP00LjajKqLUokQryd+63lHgaikK/f3zN1Dj8waNN879aQuAvDx+KCm1JbAHEbfHBRoRVU1Sxv0LxdiRrr1IwfhWEJJ1eBwD/yiVMXOjzOif34kvUGPAI5eR5Lxr/XHHfqLL4tdcQvEOW3k/BbicdWxMvjBuG5qLaX+mnxMZw6nIffPYxebBKj7St7/Z+8wSLElQCRIQrxC9VwjZS2fpcNYv1EeAelePQsLvpgG3w9LspnLHuCWuII36EKwnvZDkZ3GVqIGvOyO2pOr59kd4f45Xo30aGNGBN0Y+d4N7UJGRKIXITh549AT1vk4b5NW3CnJo0gMoQ2SMDFuuLuhGg5eyicrvqsi9zz3fhY3H4xLSBSq5yz2f0aqdiCG/C+iHo5MX7LZanrxlwkfflk+VgsqaGcpkKf4R43E1Q7cjfhExmwMtlElnU/phspXEjVYnHxqNWD8aG4httbB047KEiJVpRx70wlZTiODpMJt6f1nW2HSSkfUzjUaDPq24ZM0TZeKLHPkR77E96Wsj02kbuUH1G/K0au+PYcEM9UsWoRBUe1VNlhRI68n2Fr2blv4oYdfwZ/9l71HXp2l73l64ebXCPKbe8YIV8Ew1p+/ivGCAMZkIozt5+oWQZ4m6woF/igo36JsvrGSbWcRTFjfSBHrO2d3vL8A16s=----ATTACHMENT:----MTQwNzExNzQxOTU2NDEyMCAxMjQxNzI4MjQ0ODA1NjQ4IDY3MzEyNzE2ODc3MTgxMTk=