diff options
Diffstat (limited to 'vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/GenericEvent.php')
-rw-r--r-- | vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/GenericEvent.php | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/GenericEvent.php b/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/GenericEvent.php new file mode 100644 index 00000000..3a5efcfe --- /dev/null +++ b/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/GenericEvent.php | |||
@@ -0,0 +1,186 @@ | |||
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\EventDispatcher; | ||
13 | |||
14 | /** | ||
15 | * Event encapsulation class. | ||
16 | * | ||
17 | * Encapsulates events thus decoupling the observer from the subject they encapsulate. | ||
18 | * | ||
19 | * @author Drak <drak@zikula.org> | ||
20 | */ | ||
21 | class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate | ||
22 | { | ||
23 | /** | ||
24 | * Observer pattern subject. | ||
25 | * | ||
26 | * @var mixed usually object or callable | ||
27 | */ | ||
28 | protected $subject; | ||
29 | |||
30 | /** | ||
31 | * Array of arguments. | ||
32 | * | ||
33 | * @var array | ||
34 | */ | ||
35 | protected $arguments; | ||
36 | |||
37 | /** | ||
38 | * Encapsulate an event with $subject and $args. | ||
39 | * | ||
40 | * @param mixed $subject The subject of the event, usually an object. | ||
41 | * @param array $arguments Arguments to store in the event. | ||
42 | */ | ||
43 | public function __construct($subject = null, array $arguments = array()) | ||
44 | { | ||
45 | $this->subject = $subject; | ||
46 | $this->arguments = $arguments; | ||
47 | } | ||
48 | |||
49 | /** | ||
50 | * Getter for subject property. | ||
51 | * | ||
52 | * @return mixed $subject The observer subject. | ||
53 | */ | ||
54 | public function getSubject() | ||
55 | { | ||
56 | return $this->subject; | ||
57 | } | ||
58 | |||
59 | /** | ||
60 | * Get argument by key. | ||
61 | * | ||
62 | * @param string $key Key. | ||
63 | * | ||
64 | * @throws \InvalidArgumentException If key is not found. | ||
65 | * | ||
66 | * @return mixed Contents of array key. | ||
67 | */ | ||
68 | public function getArgument($key) | ||
69 | { | ||
70 | if ($this->hasArgument($key)) { | ||
71 | return $this->arguments[$key]; | ||
72 | } | ||
73 | |||
74 | throw new \InvalidArgumentException(sprintf('%s not found in %s', $key, $this->getName())); | ||
75 | } | ||
76 | |||
77 | /** | ||
78 | * Add argument to event. | ||
79 | * | ||
80 | * @param string $key Argument name. | ||
81 | * @param mixed $value Value. | ||
82 | * | ||
83 | * @return GenericEvent | ||
84 | */ | ||
85 | public function setArgument($key, $value) | ||
86 | { | ||
87 | $this->arguments[$key] = $value; | ||
88 | |||
89 | return $this; | ||
90 | } | ||
91 | |||
92 | /** | ||
93 | * Getter for all arguments. | ||
94 | * | ||
95 | * @return array | ||
96 | */ | ||
97 | public function getArguments() | ||
98 | { | ||
99 | return $this->arguments; | ||
100 | } | ||
101 | |||
102 | /** | ||
103 | * Set args property. | ||
104 | * | ||
105 | * @param array $args Arguments. | ||
106 | * | ||
107 | * @return GenericEvent | ||
108 | */ | ||
109 | public function setArguments(array $args = array()) | ||
110 | { | ||
111 | $this->arguments = $args; | ||
112 | |||
113 | return $this; | ||
114 | } | ||
115 | |||
116 | /** | ||
117 | * Has argument. | ||
118 | * | ||
119 | * @param string $key Key of arguments array. | ||
120 | * | ||
121 | * @return boolean | ||
122 | */ | ||
123 | public function hasArgument($key) | ||
124 | { | ||
125 | return array_key_exists($key, $this->arguments); | ||
126 | } | ||
127 | |||
128 | /** | ||
129 | * ArrayAccess for argument getter. | ||
130 | * | ||
131 | * @param string $key Array key. | ||
132 | * | ||
133 | * @throws \InvalidArgumentException If key does not exist in $this->args. | ||
134 | * | ||
135 | * @return mixed | ||
136 | */ | ||
137 | public function offsetGet($key) | ||
138 | { | ||
139 | return $this->getArgument($key); | ||
140 | } | ||
141 | |||
142 | /** | ||
143 | * ArrayAccess for argument setter. | ||
144 | * | ||
145 | * @param string $key Array key to set. | ||
146 | * @param mixed $value Value. | ||
147 | */ | ||
148 | public function offsetSet($key, $value) | ||
149 | { | ||
150 | $this->setArgument($key, $value); | ||
151 | } | ||
152 | |||
153 | /** | ||
154 | * ArrayAccess for unset argument. | ||
155 | * | ||
156 | * @param string $key Array key. | ||
157 | */ | ||
158 | public function offsetUnset($key) | ||
159 | { | ||
160 | if ($this->hasArgument($key)) { | ||
161 | unset($this->arguments[$key]); | ||
162 | } | ||
163 | } | ||
164 | |||
165 | /** | ||
166 | * ArrayAccess has argument. | ||
167 | * | ||
168 | * @param string $key Array key. | ||
169 | * | ||
170 | * @return boolean | ||
171 | */ | ||
172 | public function offsetExists($key) | ||
173 | { | ||
174 | return $this->hasArgument($key); | ||
175 | } | ||
176 | |||
177 | /** | ||
178 | * IteratorAggregate for iterating over the object like an array | ||
179 | * | ||
180 | * @return \ArrayIterator | ||
181 | */ | ||
182 | public function getIterator() | ||
183 | { | ||
184 | return new \ArrayIterator($this->arguments); | ||
185 | } | ||
186 | } | ||