PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.1.0
GiveWP – Donation Plugin and Fundraising Platform v2.1.0
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / libraries / sessions / class-recursive-arrayaccess.php
give / includes / libraries / sessions Last commit date
class-recursive-arrayaccess.php 8 years ago class-wp-session-utils.php 8 years ago class-wp-session.php 8 years ago wp-session.php 8 years ago
class-recursive-arrayaccess.php
214 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 * @since 3.7.0
11 */
12
13 /**
14 * Recursive array class to allow multidimensional array access.
15 *
16 * @package WordPress
17 * @since 3.7.0
18 */
19 class Recursive_ArrayAccess implements ArrayAccess, Iterator, Countable {
20 /**
21 * Internal data collection.
22 *
23 * @var array
24 */
25 protected $container = array();
26
27 /**
28 * Flag whether or not the internal collection has been changed.
29 *
30 * @var bool
31 */
32 protected $dirty = false;
33
34 /**
35 * Default object constructor.
36 *
37 * @param array $data
38 */
39 protected function __construct( $data = array() ) {
40 foreach ( $data as $key => $value ) {
41 $this[ $key ] = $value;
42 }
43 }
44
45 /**
46 * Allow deep copies of objects
47 */
48 public function __clone() {
49 foreach ( $this->container as $key => $value ) {
50 if ( $value instanceof self ) {
51 $this[ $key ] = clone $value;
52 }
53 }
54 }
55
56 /**
57 * Output the data container as a multidimensional array.
58 *
59 * @return array
60 */
61 public function toArray() {
62 $data = $this->container;
63 foreach ( $data as $key => $value ) {
64 if ( $value instanceof self ) {
65 $data[ $key ] = $value->toArray();
66 }
67 }
68 return $data;
69 }
70
71 /*****************************************************************/
72 /* ArrayAccess Implementation */
73 /*****************************************************************/
74
75 /**
76 * Whether a offset exists
77 *
78 * @link http://php.net/manual/en/arrayaccess.offsetexists.php
79 *
80 * @param mixed $offset An offset to check for.
81 *
82 * @return boolean true on success or false on failure.
83 */
84 public function offsetExists( $offset ) {
85 return isset( $this->container[ $offset ]) ;
86 }
87
88 /**
89 * Offset to retrieve
90 *
91 * @link http://php.net/manual/en/arrayaccess.offsetget.php
92 *
93 * @param mixed $offset The offset to retrieve.
94 *
95 * @return mixed Can return all value types.
96 */
97 public function offsetGet( $offset ) {
98 return isset( $this->container[ $offset ] ) ? $this->container[ $offset ] : null;
99 }
100
101 /**
102 * Offset to set
103 *
104 * @link http://php.net/manual/en/arrayaccess.offsetset.php
105 *
106 * @param mixed $offset The offset to assign the value to.
107 * @param mixed $value The value to set.
108 *
109 * @return void
110 */
111 public function offsetSet( $offset, $data ) {
112 if ( is_array( $data ) ) {
113 $data = new self( $data );
114 }
115 if ( $offset === null ) { // don't forget this!
116 $this->container[] = $data;
117 } else {
118 $this->container[ $offset ] = $data;
119 }
120
121 $this->dirty = true;
122 }
123
124 /**
125 * Offset to unset
126 *
127 * @link http://php.net/manual/en/arrayaccess.offsetunset.php
128 *
129 * @param mixed $offset The offset to unset.
130 *
131 * @return void
132 */
133 public function offsetUnset( $offset ) {
134 unset( $this->container[ $offset ] );
135
136 $this->dirty = true;
137 }
138
139
140 /*****************************************************************/
141 /* Iterator Implementation */
142 /*****************************************************************/
143
144 /**
145 * Current position of the array.
146 *
147 * @link http://php.net/manual/en/iterator.current.php
148 *
149 * @return mixed
150 */
151 public function current() {
152 return current( $this->container );
153 }
154
155 /**
156 * Key of the current element.
157 *
158 * @link http://php.net/manual/en/iterator.key.php
159 *
160 * @return mixed
161 */
162 public function key() {
163 return key( $this->container );
164 }
165
166 /**
167 * Move the internal point of the container array to the next item
168 *
169 * @link http://php.net/manual/en/iterator.next.php
170 *
171 * @return void
172 */
173 public function next() {
174 next( $this->container );
175 }
176
177 /**
178 * Rewind the internal point of the container array.
179 *
180 * @link http://php.net/manual/en/iterator.rewind.php
181 *
182 * @return void
183 */
184 public function rewind() {
185 reset( $this->container );
186 }
187
188 /**
189 * Is the current key valid?
190 *
191 * @link http://php.net/manual/en/iterator.rewind.php
192 *
193 * @return bool
194 */
195 public function valid() {
196 return $this->offsetExists( $this->key() );
197 }
198
199 /*****************************************************************/
200 /* Countable Implementation */
201 /*****************************************************************/
202
203 /**
204 * Get the count of elements in the container array.
205 *
206 * @link http://php.net/manual/en/countable.count.php
207 *
208 * @return int
209 */
210 public function count() {
211 return count( $this->container );
212 }
213 }
214