You are here

DumperCollection.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 vendor/symfony/routing/Matcher/Dumper/DumperCollection.php

File

vendor/symfony/routing/Matcher/Dumper/DumperCollection.php
View source
<?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\Routing\Matcher\Dumper;


/**
 * Collection of routes.
 *
 * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
 *
 * @internal
 */
class DumperCollection implements \IteratorAggregate {

  /**
   * @var DumperCollection|null
   */
  private $parent;

  /**
   * @var (DumperCollection|DumperRoute)[]
   */
  private $children = array();

  /**
   * @var array
   */
  private $attributes = array();

  /**
   * Returns the children routes and collections.
   *
   * @return (DumperCollection|DumperRoute)[] Array of DumperCollection|DumperRoute
   */
  public function all() {
    return $this->children;
  }

  /**
   * Adds a route or collection.
   *
   * @param DumperRoute|DumperCollection The route or collection
   */
  public function add($child) {
    if ($child instanceof self) {
      $child
        ->setParent($this);
    }
    $this->children[] = $child;
  }

  /**
   * Sets children.
   *
   * @param array $children The children
   */
  public function setAll(array $children) {
    foreach ($children as $child) {
      if ($child instanceof self) {
        $child
          ->setParent($this);
      }
    }
    $this->children = $children;
  }

  /**
   * Returns an iterator over the children.
   *
   * @return \Iterator The iterator
   */
  public function getIterator() {
    return new \ArrayIterator($this->children);
  }

  /**
   * Returns the root of the collection.
   *
   * @return DumperCollection The root collection
   */
  public function getRoot() {
    return null !== $this->parent ? $this->parent
      ->getRoot() : $this;
  }

  /**
   * Returns the parent collection.
   *
   * @return DumperCollection|null The parent collection or null if the collection has no parent
   */
  protected function getParent() {
    return $this->parent;
  }

  /**
   * Sets the parent collection.
   *
   * @param DumperCollection $parent The parent collection
   */
  protected function setParent(DumperCollection $parent) {
    $this->parent = $parent;
  }

  /**
   * Returns true if the attribute is defined.
   *
   * @param string $name The attribute name
   *
   * @return bool true if the attribute is defined, false otherwise
   */
  public function hasAttribute($name) {
    return array_key_exists($name, $this->attributes);
  }

  /**
   * Returns an attribute by name.
   *
   * @param string $name    The attribute name
   * @param mixed  $default Default value is the attribute doesn't exist
   *
   * @return mixed The attribute value
   */
  public function getAttribute($name, $default = null) {
    return $this
      ->hasAttribute($name) ? $this->attributes[$name] : $default;
  }

  /**
   * Sets an attribute by name.
   *
   * @param string $name  The attribute name
   * @param mixed  $value The attribute value
   */
  public function setAttribute($name, $value) {
    $this->attributes[$name] = $value;
  }

  /**
   * Sets multiple attributes.
   *
   * @param array $attributes The attributes
   */
  public function setAttributes($attributes) {
    $this->attributes = $attributes;
  }

}

Classes

Namesort descending Description
DumperCollection Collection of routes.