* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Serializer\Mapping; /** * {@inheritdoc} * * @author Kévin Dunglas */ class AttributeMetadata implements AttributeMetadataInterface { /** * @var string * * @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; /** * @var array * * @internal This property is public in order to reduce the size of the * class' serialized representation. Do not access it. Use * {@link getGroups()} instead. */ public $groups = array(); /** * Constructs a metadata for the given attribute. * * @param string $name */ public function __construct($name) { $this->name = $name; } /** * {@inheritdoc} */ public function getName() { return $this->name; } /** * {@inheritdoc} */ public function addGroup($group) { if (!in_array($group, $this->groups)) { $this->groups[] = $group; } } /** * {@inheritdoc} */ public function getGroups() { return $this->groups; } /** * {@inheritdoc} */ public function merge(AttributeMetadataInterface $attributeMetadata) { foreach ($attributeMetadata->getGroups() as $group) { $this->addGroup($group); } } /** * Returns the names of the properties that should be serialized. * * @return string[] */ public function __sleep() { return array('name', 'groups'); } }