2010-06-24 09:40:05 +01:00
|
|
|
<?php
|
|
|
|
|
2010-10-02 11:42:31 +01:00
|
|
|
/*
|
2011-01-15 13:29:43 +00:00
|
|
|
* This file is part of the Symfony package.
|
2010-10-02 11:42:31 +01:00
|
|
|
*
|
|
|
|
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
|
|
|
*
|
2011-01-15 13:29:43 +00:00
|
|
|
* For the full copyright and license information, please view the LICENSE
|
|
|
|
* file that was distributed with this source code.
|
2010-10-02 11:42:31 +01:00
|
|
|
*/
|
|
|
|
|
2011-01-15 13:29:43 +00:00
|
|
|
namespace Symfony\Component\Validator\Mapping;
|
|
|
|
|
2010-08-20 22:09:55 +01:00
|
|
|
use Symfony\Component\Validator\Constraint;
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-29 16:20:29 +01:00
|
|
|
abstract class ElementMetadata
|
2010-06-24 09:40:05 +01:00
|
|
|
{
|
2010-06-29 16:20:29 +01:00
|
|
|
public $constraints = array();
|
|
|
|
public $constraintsByGroup = array();
|
|
|
|
|
|
|
|
/**
|
2010-10-15 22:49:09 +01:00
|
|
|
* Returns the names of the properties that should be serialized.
|
2010-06-29 16:20:29 +01:00
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function __sleep()
|
|
|
|
{
|
|
|
|
return array(
|
|
|
|
'constraints',
|
|
|
|
'constraintsByGroup',
|
|
|
|
);
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
2010-10-15 22:49:09 +01:00
|
|
|
* Clones this object.
|
2010-06-24 10:24:08 +01:00
|
|
|
*/
|
|
|
|
public function __clone()
|
|
|
|
{
|
|
|
|
$constraints = $this->constraints;
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
$this->constraints = array();
|
|
|
|
$this->constraintsByGroup = array();
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
foreach ($constraints as $constraint) {
|
|
|
|
$this->addConstraint(clone $constraint);
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
}
|
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
2010-10-15 22:49:09 +01:00
|
|
|
* Adds a constraint to this element.
|
2010-06-24 10:24:08 +01:00
|
|
|
*
|
|
|
|
* @param Constraint $constraint
|
|
|
|
*/
|
|
|
|
public function addConstraint(Constraint $constraint)
|
2010-06-24 09:40:05 +01:00
|
|
|
{
|
2010-06-24 10:24:08 +01:00
|
|
|
$this->constraints[] = $constraint;
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
foreach ($constraint->groups as $group) {
|
|
|
|
if (!isset($this->constraintsByGroup[$group])) {
|
|
|
|
$this->constraintsByGroup[$group] = array();
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->constraintsByGroup[$group][] = $constraint;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
return $this;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
2010-10-15 22:49:09 +01:00
|
|
|
* Returns all constraints of this element.
|
2010-06-24 10:24:08 +01:00
|
|
|
*
|
|
|
|
* @return array An array of Constraint instances
|
|
|
|
*/
|
|
|
|
public function getConstraints()
|
|
|
|
{
|
|
|
|
return $this->constraints;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
2010-10-15 22:49:09 +01:00
|
|
|
* Returns whether this element has any constraints.
|
2010-06-24 10:24:08 +01:00
|
|
|
*
|
2011-01-21 01:39:28 +00:00
|
|
|
* @return Boolean
|
2010-06-24 10:24:08 +01:00
|
|
|
*/
|
|
|
|
public function hasConstraints()
|
|
|
|
{
|
|
|
|
return count($this->constraints) > 0;
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-06-24 10:24:08 +01:00
|
|
|
/**
|
2010-10-27 14:35:23 +01:00
|
|
|
* Returns the constraints of the given group and global ones (* group).
|
2010-06-24 10:24:08 +01:00
|
|
|
*
|
2010-10-15 22:49:09 +01:00
|
|
|
* @param string $group The group name
|
|
|
|
*
|
|
|
|
* @return array An array with all Constraint instances belonging to the group
|
2010-06-24 10:24:08 +01:00
|
|
|
*/
|
|
|
|
public function findConstraints($group)
|
|
|
|
{
|
2010-11-16 22:41:46 +00:00
|
|
|
return isset($this->constraintsByGroup[$group])
|
2010-06-24 10:24:08 +01:00
|
|
|
? $this->constraintsByGroup[$group]
|
|
|
|
: array();
|
|
|
|
}
|
2010-10-27 14:35:23 +01:00
|
|
|
}
|