Subversion Repositories php-qbpwcf

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
/*
4
 * This file is part of the Symfony package.
5
 *
6
 * (c) Fabien Potencier <fabien@symfony.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
 
12
namespace Symfony\Component\Routing\Matcher\Dumper;
13
 
14
/**
15
 * Collection of routes.
16
 *
17
 * @author Arnaud Le Blanc <arnaud.lb@gmail.com>
18
 *
19
 * @internal
20
 */
21
class DumperCollection implements \IteratorAggregate
22
{
23
    /**
24
     * @var DumperCollection|null
25
     */
26
    private $parent;
27
 
28
    /**
29
     * @var DumperCollection[]|DumperRoute[]
30
     */
31
    private $children = array();
32
 
33
    /**
34
     * @var array
35
     */
36
    private $attributes = array();
37
 
38
    /**
39
     * Returns the children routes and collections.
40
     *
41
     * @return DumperCollection[]|DumperRoute[] Array of DumperCollection|DumperRoute
42
     */
43
    public function all()
44
    {
45
        return $this->children;
46
    }
47
 
48
    /**
49
     * Adds a route or collection.
50
     *
51
     * @param DumperRoute|DumperCollection The route or collection
52
     */
53
    public function add($child)
54
    {
55
        if ($child instanceof self) {
56
            $child->setParent($this);
57
        }
58
        $this->children[] = $child;
59
    }
60
 
61
    /**
62
     * Sets children.
63
     *
64
     * @param array $children The children
65
     */
66
    public function setAll(array $children)
67
    {
68
        foreach ($children as $child) {
69
            if ($child instanceof self) {
70
                $child->setParent($this);
71
            }
72
        }
73
        $this->children = $children;
74
    }
75
 
76
    /**
77
     * Returns an iterator over the children.
78
     *
79
     * @return \Iterator|DumperCollection[]|DumperRoute[] The iterator
80
     */
81
    public function getIterator()
82
    {
83
        return new \ArrayIterator($this->children);
84
    }
85
 
86
    /**
87
     * Returns the root of the collection.
88
     *
89
     * @return DumperCollection The root collection
90
     */
91
    public function getRoot()
92
    {
93
        return (null !== $this->parent) ? $this->parent->getRoot() : $this;
94
    }
95
 
96
    /**
97
     * Returns the parent collection.
98
     *
99
     * @return DumperCollection|null The parent collection or null if the collection has no parent
100
     */
101
    protected function getParent()
102
    {
103
        return $this->parent;
104
    }
105
 
106
    /**
107
     * Sets the parent collection.
108
     *
109
     * @param DumperCollection $parent The parent collection
110
     */
111
    protected function setParent(DumperCollection $parent)
112
    {
113
        $this->parent = $parent;
114
    }
115
 
116
    /**
117
     * Returns true if the attribute is defined.
118
     *
119
     * @param string $name The attribute name
120
     *
121
     * @return bool true if the attribute is defined, false otherwise
122
     */
123
    public function hasAttribute($name)
124
    {
125
        return array_key_exists($name, $this->attributes);
126
    }
127
 
128
    /**
129
     * Returns an attribute by name.
130
     *
131
     * @param string $name    The attribute name
132
     * @param mixed  $default Default value is the attribute doesn't exist
133
     *
134
     * @return mixed The attribute value
135
     */
136
    public function getAttribute($name, $default = null)
137
    {
138
        return $this->hasAttribute($name) ? $this->attributes[$name] : $default;
139
    }
140
 
141
    /**
142
     * Sets an attribute by name.
143
     *
144
     * @param string $name  The attribute name
145
     * @param mixed  $value The attribute value
146
     */
147
    public function setAttribute($name, $value)
148
    {
149
        $this->attributes[$name] = $value;
150
    }
151
 
152
    /**
153
     * Sets multiple attributes.
154
     *
155
     * @param array $attributes The attributes
156
     */
157
    public function setAttributes($attributes)
158
    {
159
        $this->attributes = $attributes;
160
    }
161
}