2010-06-24 09:40:05 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Symfony\Components\Validator\Mapping;
|
|
|
|
|
|
|
|
use Symfony\Components\Validator\Exception\ValidatorException;
|
|
|
|
|
|
|
|
abstract class MemberMetadata extends ElementMetadata
|
|
|
|
{
|
2010-06-29 16:20:29 +01:00
|
|
|
public $class;
|
|
|
|
public $name;
|
|
|
|
public $property;
|
2010-06-24 10:24:08 +01:00
|
|
|
private $reflMember;
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-29 16:20:29 +01:00
|
|
|
/**
|
|
|
|
* Returns the names of the properties that should be serialized
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function __sleep()
|
|
|
|
{
|
|
|
|
return array_merge(parent::__sleep(), array(
|
|
|
|
'class',
|
|
|
|
'name',
|
|
|
|
'property'
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Returns the name of the member
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getName()
|
|
|
|
{
|
|
|
|
return $this->name;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Returns the class this member is defined on
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getClassName()
|
|
|
|
{
|
|
|
|
return $this->class;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Returns the name of the property this member belongs to
|
|
|
|
*
|
|
|
|
* @return string The property name
|
|
|
|
*/
|
|
|
|
public function getPropertyName()
|
|
|
|
{
|
|
|
|
return $this->property;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Returns whether this member is public
|
|
|
|
*
|
|
|
|
* @return boolean
|
|
|
|
*/
|
|
|
|
public function isPublic()
|
|
|
|
{
|
|
|
|
return $this->getReflectionMember()->isPublic();
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Returns whether this member is protected
|
|
|
|
*
|
|
|
|
* @return boolean
|
|
|
|
*/
|
|
|
|
public function isProtected()
|
|
|
|
{
|
|
|
|
return $this->getReflectionMember()->isProtected();
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Returns whether this member is private
|
|
|
|
*
|
|
|
|
* @return boolean
|
|
|
|
*/
|
|
|
|
public function isPrivate()
|
|
|
|
{
|
|
|
|
return $this->getReflectionMember()->isPrivate();
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Returns the value of this property in the given object
|
|
|
|
*
|
|
|
|
* @param object $object The object
|
|
|
|
* @return mixed The property value
|
|
|
|
*/
|
|
|
|
abstract public function getValue($object);
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Returns the Reflection instance of the member
|
|
|
|
*
|
|
|
|
* @return object
|
|
|
|
*/
|
|
|
|
public function getReflectionMember()
|
2010-06-24 09:40:05 +01:00
|
|
|
{
|
2010-06-24 10:24:08 +01:00
|
|
|
if (!$this->reflMember) {
|
|
|
|
$this->reflMember = $this->newReflectionMember();
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
return $this->reflMember;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
|
|
|
* Creates a new Reflection instance for the member
|
|
|
|
*
|
|
|
|
* @return object
|
|
|
|
*/
|
|
|
|
abstract protected function newReflectionMember();
|
2010-06-24 09:40:05 +01:00
|
|
|
}
|