Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: namespace Symfony\Component\Validator; Chris@0: Chris@0: /** Chris@0: * Default implementation of {@ConstraintViolationListInterface}. Chris@0: * Chris@0: * @author Bernhard Schussek Chris@0: */ Chris@0: class ConstraintViolationList implements \IteratorAggregate, ConstraintViolationListInterface Chris@0: { Chris@0: /** Chris@0: * @var ConstraintViolationInterface[] Chris@0: */ Chris@0: private $violations = array(); Chris@0: Chris@0: /** Chris@0: * Creates a new constraint violation list. Chris@0: * Chris@0: * @param ConstraintViolationInterface[] $violations The constraint violations to add to the list Chris@0: */ Chris@0: public function __construct(array $violations = array()) Chris@0: { Chris@0: foreach ($violations as $violation) { Chris@0: $this->add($violation); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * Converts the violation into a string for debugging purposes. Chris@0: * Chris@0: * @return string The violation as string Chris@0: */ Chris@0: public function __toString() Chris@0: { Chris@0: $string = ''; Chris@0: Chris@0: foreach ($this->violations as $violation) { Chris@0: $string .= $violation."\n"; Chris@0: } Chris@0: Chris@0: return $string; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function add(ConstraintViolationInterface $violation) Chris@0: { Chris@0: $this->violations[] = $violation; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function addAll(ConstraintViolationListInterface $otherList) Chris@0: { Chris@0: foreach ($otherList as $violation) { Chris@0: $this->violations[] = $violation; Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function get($offset) Chris@0: { Chris@0: if (!isset($this->violations[$offset])) { Chris@0: throw new \OutOfBoundsException(sprintf('The offset "%s" does not exist.', $offset)); Chris@0: } Chris@0: Chris@0: return $this->violations[$offset]; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function has($offset) Chris@0: { Chris@0: return isset($this->violations[$offset]); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function set($offset, ConstraintViolationInterface $violation) Chris@0: { Chris@0: $this->violations[$offset] = $violation; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function remove($offset) Chris@0: { Chris@0: unset($this->violations[$offset]); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: * Chris@0: * @return \ArrayIterator|ConstraintViolationInterface[] Chris@0: */ Chris@0: public function getIterator() Chris@0: { Chris@0: return new \ArrayIterator($this->violations); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function count() Chris@0: { Chris@0: return count($this->violations); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function offsetExists($offset) Chris@0: { Chris@0: return $this->has($offset); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function offsetGet($offset) Chris@0: { Chris@0: return $this->get($offset); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function offsetSet($offset, $violation) Chris@0: { Chris@0: if (null === $offset) { Chris@0: $this->add($violation); Chris@0: } else { Chris@0: $this->set($offset, $violation); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function offsetUnset($offset) Chris@0: { Chris@0: $this->remove($offset); Chris@0: } Chris@0: }