2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* 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 < dunglas @ gmail . com >
*/
class AttributeMetadata implements AttributeMetadataInterface
{
/**
* @ 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 getGroups ()} instead .
*/
public $groups = array ();
2018-11-23 12:29:20 +00:00
/**
* @ var int | null
*
* @ internal This property is public in order to reduce the size of the
* class ' serialized representation . Do not access it . Use
* { @ link getMaxDepth ()} instead .
*/
public $maxDepth ;
2015-08-17 17:00:26 -07:00
/**
* 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 )
{
2018-11-23 12:29:20 +00:00
if ( ! \in_array ( $group , $this -> groups )) {
2015-08-17 17:00:26 -07:00
$this -> groups [] = $group ;
}
}
/**
* { @ inheritdoc }
*/
public function getGroups ()
{
return $this -> groups ;
}
2018-11-23 12:29:20 +00:00
/**
* { @ inheritdoc }
*/
public function setMaxDepth ( $maxDepth )
{
$this -> maxDepth = $maxDepth ;
}
/**
* { @ inheritdoc }
*/
public function getMaxDepth ()
{
return $this -> maxDepth ;
}
2015-08-17 17:00:26 -07:00
/**
* { @ inheritdoc }
*/
public function merge ( AttributeMetadataInterface $attributeMetadata )
{
foreach ( $attributeMetadata -> getGroups () as $group ) {
$this -> addGroup ( $group );
}
2018-11-23 12:29:20 +00:00
// Overwrite only if not defined
if ( null === $this -> maxDepth ) {
$this -> maxDepth = $attributeMetadata -> getMaxDepth ();
}
2015-08-17 17:00:26 -07:00
}
/**
* Returns the names of the properties that should be serialized .
*
* @ return string []
*/
public function __sleep ()
{
2018-11-23 12:29:20 +00:00
return array ( 'name' , 'groups' , 'maxDepth' );
2015-08-17 17:00:26 -07:00
}
}