2010-06-24 09:40:05 +01:00
|
|
|
<?php
|
|
|
|
|
2010-08-20 22:09:55 +01:00
|
|
|
namespace Symfony\Component\Validator\Mapping;
|
2010-06-24 09:40:05 +01:00
|
|
|
|
2010-10-02 11:42:31 +01:00
|
|
|
/*
|
|
|
|
* This file is part of the Symfony framework.
|
|
|
|
*
|
|
|
|
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
|
|
|
*
|
|
|
|
* This source file is subject to the MIT license that is bundled
|
|
|
|
* with this source code in the file LICENSE.
|
|
|
|
*/
|
|
|
|
|
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
|
|
|
*
|
|
|
|
* @return boolean
|
|
|
|
*/
|
|
|
|
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-15 22:49:09 +01:00
|
|
|
* Returns the constraints of the given 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)
|
|
|
|
{
|
|
|
|
return isset($this->constraintsByGroup[$group])
|
|
|
|
? $this->constraintsByGroup[$group]
|
|
|
|
: array();
|
|
|
|
}
|
2010-06-24 09:40:05 +01:00
|
|
|
}
|