PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / lib / wp_session / class-recursive-arrayaccess.php
wp-user-avatar / src / lib / wp_session Last commit date
class-recursive-arrayaccess.php 3 years ago class-wp-session-utils.php 3 years ago class-wp-session.php 3 years ago wp-session.php 3 years ago
class-recursive-arrayaccess.php
237 lines
1 <?php
2 /**
3 * Multidimensional ArrayAccess
4 *
5 * Allows ArrayAccess-like functionality with multidimensional arrays. Fully supports
6 * both sets and unsets.
7 *
8 * @package WordPress
9 * @subpackage Session
10 */
11
12 /**
13 * Recursive array class to allow multidimensional array access.
14 *
15 * @package WordPress
16 */
17 class PPRESS_Recursive_ArrayAccess implements ArrayAccess, Iterator, Countable
18 {
19 /**
20 * Internal data collection.
21 *
22 * @var array
23 */
24 protected $container = array();
25
26 /**
27 * Flag whether or not the internal collection has been changed.
28 *
29 * @var bool
30 */
31 protected $dirty = false;
32
33 /**
34 * Default object constructor.
35 *
36 * @param array $data
37 */
38 protected function __construct($data = array())
39 {
40 foreach ($data as $key => $value) {
41 $this->container[$key] = $value;
42 }
43 }
44
45 /**
46 * Allow deep copies of objects
47 */
48 public function __clone()
49 {
50 foreach ($this->container as $key => $value) {
51 if ($value instanceof self) {
52 $this[$key] = clone $value;
53 }
54 }
55 }
56
57 /**
58 * Output the data container as a multidimensional array.
59 *
60 * @return array
61 */
62 public function toArray()
63 {
64 $data = $this->container;
65 foreach ($data as $key => $value) {
66 if ($value instanceof self) {
67 $data[$key] = $value->toArray();
68 }
69 }
70
71 return $data;
72 }
73
74 /*****************************************************************/
75 /* ArrayAccess Implementation */
76 /*****************************************************************/
77
78 /**
79 * Whether a offset exists
80 *
81 * @link http://php.net/manual/en/arrayaccess.offsetexists.php
82 *
83 * @param mixed $offset An offset to check for.
84 *
85 * @return boolean true on success or false on failure.
86 */
87 #[\ReturnTypeWillChange]
88 public function offsetExists($offset)
89 {
90 return isset($this->container[$offset]);
91 }
92
93 /**
94 * Offset to retrieve
95 *
96 * @link http://php.net/manual/en/arrayaccess.offsetget.php
97 *
98 * @param mixed $offset The offset to retrieve.
99 *
100 * @return mixed Can return all value types.
101 */
102 #[\ReturnTypeWillChange]
103 public function offsetGet($offset)
104 {
105 return isset($this->container[$offset]) ? $this->container[$offset] : null;
106 }
107
108 /**
109 * Offset to set
110 *
111 * @link http://php.net/manual/en/arrayaccess.offsetset.php
112 *
113 * @param mixed $offset The offset to assign the value to.
114 * @param mixed $value The value to set.
115 *
116 * @return void
117 */
118 #[\ReturnTypeWillChange]
119 public function offsetSet($offset, $data)
120 {
121 if (is_array($data)) {
122 $data = new self($data);
123 }
124 if ($offset === null) { // don't forget this!
125 $this->container[] = $data;
126 } else {
127 $this->container[$offset] = $data;
128 }
129
130 $this->dirty = true;
131 }
132
133 /**
134 * Offset to unset
135 *
136 * @link http://php.net/manual/en/arrayaccess.offsetunset.php
137 *
138 * @param mixed $offset The offset to unset.
139 *
140 * @return void
141 */
142 #[\ReturnTypeWillChange]
143 public function offsetUnset($offset)
144 {
145 unset($this->container[$offset]);
146
147 $this->dirty = true;
148 }
149
150
151 /*****************************************************************/
152 /* Iterator Implementation */
153 /*****************************************************************/
154
155 /**
156 * Current position of the array.
157 *
158 * @link http://php.net/manual/en/iterator.current.php
159 *
160 * @return mixed
161 */
162 #[\ReturnTypeWillChange]
163 public function current()
164 {
165 return current($this->container);
166 }
167
168 /**
169 * Key of the current element.
170 *
171 * @link http://php.net/manual/en/iterator.key.php
172 *
173 * @return mixed
174 */
175 #[\ReturnTypeWillChange]
176 public function key()
177 {
178 return key($this->container);
179 }
180
181 /**
182 * Move the internal point of the container array to the next item
183 *
184 * @link http://php.net/manual/en/iterator.next.php
185 *
186 * @return void
187 */
188 #[\ReturnTypeWillChange]
189 public function next()
190 {
191 next($this->container);
192 }
193
194 /**
195 * Rewind the internal point of the container array.
196 *
197 * @link http://php.net/manual/en/iterator.rewind.php
198 *
199 * @return void
200 */
201 #[\ReturnTypeWillChange]
202 public function rewind()
203 {
204 reset($this->container);
205 }
206
207 /**
208 * Is the current key valid?
209 *
210 * @link http://php.net/manual/en/iterator.rewind.php
211 *
212 * @return bool
213 */
214 #[\ReturnTypeWillChange]
215 public function valid()
216 {
217 return $this->offsetExists($this->key());
218 }
219
220 /*****************************************************************/
221 /* Countable Implementation */
222 /*****************************************************************/
223
224 /**
225 * Get the count of elements in the container array.
226 *
227 * @link http://php.net/manual/en/countable.count.php
228 *
229 * @return int
230 */
231 #[\ReturnTypeWillChange]
232 public function count()
233 {
234 return count($this->container);
235 }
236 }
237