@@ -17,6 +17,11 @@ $o = new DimensionHandlersNoArrayAccess();
1717$ o ['foo ' ] = true ;
1818exportObject ($ o );
1919
20+ echo 'read-write op ' , PHP_EOL ;
21+ $ o = new DimensionHandlersNoArrayAccess ();
22+ $ o ['foo ' ] += 10 ;
23+ exportObject ($ o );
24+
2025echo 'isset op ' , PHP_EOL ;
2126$ o = new DimensionHandlersNoArrayAccess ();
2227$ r = isset ($ o ['foo ' ]);
@@ -37,6 +42,11 @@ $o = new DimensionHandlersNoArrayAccess();
3742$ o [] = true ;
3843exportObject ($ o );
3944
45+ echo 'unset op ' , PHP_EOL ;
46+ $ o = new DimensionHandlersNoArrayAccess ();
47+ unset($ o ['foo ' ]);
48+ exportObject ($ o );
49+
4050echo 'nested read ' , PHP_EOL ;
4151$ o = new DimensionHandlersNoArrayAccess ();
4252$ r = $ o ['foo ' ]['bar ' ];
@@ -45,30 +55,51 @@ exportObject($o);
4555// Illegal
4656//echo 'nested read: appending then read', PHP_EOL;
4757//$o = new DimensionHandlersNoArrayAccess();
48- //$r = $o[]['bar'];
49- //var_dump($o);
58+ //try {
59+ // $r = $o[]['bar'];
60+ //} catch (\Throwable $e) {
61+ // echo $e::class, ': ', $e->getMessage(), PHP_EOL;
62+ //}
5063
5164echo 'nested write ' , PHP_EOL ;
65+ $ o = new DimensionHandlersNoArrayAccess ();
5266try {
53- $ o = new DimensionHandlersNoArrayAccess ();
5467 $ o ['foo ' ]['bar ' ] = true ;
5568} catch (\Throwable $ e ) {
5669 echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
5770}
5871exportObject ($ o );
5972
6073echo 'nested write: appending then write ' , PHP_EOL ;
74+ $ o = new DimensionHandlersNoArrayAccess ();
6175try {
62- $ o = new DimensionHandlersNoArrayAccess ();
6376 $ o []['bar ' ] = true ;
6477} catch (\Throwable $ e ) {
6578 echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
6679}
6780exportObject ($ o );
6881
82+ echo 'nested read-write ' , PHP_EOL ;
83+ $ o = new DimensionHandlersNoArrayAccess ();
84+ try {
85+ $ o ['foo ' ]['bar ' ] += 10 ;
86+ } catch (\Throwable $ e ) {
87+ echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
88+ }
89+ exportObject ($ o );
90+
91+ echo 'nested read-write: appending then write ' , PHP_EOL ;
92+ $ o = new DimensionHandlersNoArrayAccess ();
93+ try {
94+ $ o []['bar ' ] += 10 ;
95+ } catch (\Throwable $ e ) {
96+ echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
97+ }
98+ exportObject ($ o );
99+
69100echo 'nested isset ' , PHP_EOL ;
101+ $ o = new DimensionHandlersNoArrayAccess ();
70102try {
71- $ o = new DimensionHandlersNoArrayAccess ();
72103 $ r = isset ($ o ['foo ' ]['bar ' ]);
73104} catch (\Throwable $ e ) {
74105 echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
@@ -80,14 +111,14 @@ exportObject($o);
80111//try {
81112// $o = new DimensionHandlersNoArrayAccess();
82113// $r = isset($o[]['bar']);
83- // var_dump($o);
84114//} catch (\Throwable $e) {
85115// echo $e::class, ': ', $e->getMessage(), PHP_EOL;
86116//}
117+ //exportObject($o);
87118
88119echo 'nested empty ' , PHP_EOL ;
120+ $ o = new DimensionHandlersNoArrayAccess ();
89121try {
90- $ o = new DimensionHandlersNoArrayAccess ();
91122 $ r = empty ($ o ['foo ' ]['bar ' ]);
92123} catch (\Throwable $ e ) {
93124 echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
@@ -99,14 +130,14 @@ exportObject($o);
99130//try {
100131// $o = new DimensionHandlersNoArrayAccess();
101132// $r = empty($o[]['bar']);
102- // var_dump($o);
103133//} catch (\Throwable $e) {
104134// echo $e::class, ': ', $e->getMessage(), PHP_EOL;
105135//}
136+ //exportObject($o);
106137
107138echo 'nested null coalescing ' , PHP_EOL ;
139+ $ o = new DimensionHandlersNoArrayAccess ();
108140try {
109- $ o = new DimensionHandlersNoArrayAccess ();
110141 $ r = $ o ['foo ' ]['bar ' ] ?? 'default ' ;
111142} catch (\Throwable $ e ) {
112143 echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
@@ -118,70 +149,108 @@ exportObject($o);
118149//try {
119150// $o = new DimensionHandlersNoArrayAccess();
120151// $r = $o[]['bar'] ?? 'default';
121- // var_dump($o);
122152//} catch (\Throwable $e) {
123153// echo $e::class, ': ', $e->getMessage(), PHP_EOL;
124154//}
155+ //exportObject($o);
125156
126157echo 'nested appending ' , PHP_EOL ;
158+ $ o = new DimensionHandlersNoArrayAccess ();
127159try {
128- $ o = new DimensionHandlersNoArrayAccess ();
129160 $ o ['foo ' ][] = true ;
130161} catch (\Throwable $ e ) {
131162 echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
132163}
133164exportObject ($ o );
134165
135166echo 'nested appending: appending then append ' , PHP_EOL ;
167+ $ o = new DimensionHandlersNoArrayAccess ();
136168try {
137- $ o = new DimensionHandlersNoArrayAccess ();
138169 $ o [][] = true ;
139170} catch (\Throwable $ e ) {
140171 echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
141172}
142173exportObject ($ o );
143174
175+ echo 'nested unset ' , PHP_EOL ;
176+ $ o = new DimensionHandlersNoArrayAccess ();
177+ try {
178+ unset($ o ['foo ' ]['bar ' ]);
179+ } catch (\Throwable $ e ) {
180+ echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
181+ }
182+ exportObject ($ o );
183+
184+ // Illegal
185+ //echo 'nested unset: appending then read', PHP_EOL;
186+ //try {
187+ // $o = new DimensionHandlersNoArrayAccess();
188+ // unset($o[]['bar']);
189+ //} catch (\Throwable $e) {
190+ // echo $e::class, ': ', $e->getMessage(), PHP_EOL;
191+ //}
192+ //exportObject($o);
193+
144194?>
145195--EXPECTF--
146196read op
147- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 0 , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
197+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_R , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
148198write op
149199DimensionHandlersNoArrayAccess, read: false, write: true, has: false, unset: false, readType: uninitialized, hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
200+ read-write op
201+ DimensionHandlersNoArrayAccess, read: true, write: true, has: false, unset: false, readType: BP_VAR_R, hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
150202isset op
151203DimensionHandlersNoArrayAccess, read: false, write: false, has: true, unset: false, readType: uninitialized, hasOffset: true, checkEmpty: 0, offset: 'foo'
152204empty op
153205DimensionHandlersNoArrayAccess, read: false, write: false, has: true, unset: false, readType: uninitialized, hasOffset: true, checkEmpty: 1, offset: 'foo'
154206null coalescing op
155- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 3 , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
207+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_IS , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
156208appending op
157209DimensionHandlersNoArrayAccess, read: false, write: true, has: false, unset: false, readType: uninitialized, hasOffset: false, checkEmpty: uninitialized, offset: uninitialized
210+ unset op
211+ DimensionHandlersNoArrayAccess, read: false, write: false, has: false, unset: true, readType: uninitialized, hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
158212nested read
159213
160214Warning: Trying to access array offset on true in %s on line %d
161- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 0 , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
215+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_R , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
162216nested write
163217
164218Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
165219Error: Cannot use a scalar value as an array
166- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 1 , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
220+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_W , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
167221nested write: appending then write
168222
169223Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
170224Error: Cannot use a scalar value as an array
171- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 1, hasOffset: false, checkEmpty: uninitialized, offset: uninitialized
225+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_W, hasOffset: false, checkEmpty: uninitialized, offset: uninitialized
226+ nested read-write
227+
228+ Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
229+ Error: Cannot use a scalar value as an array
230+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_RW, hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
231+ nested read-write: appending then write
232+
233+ Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
234+ Error: Cannot use a scalar value as an array
235+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_RW, hasOffset: false, checkEmpty: uninitialized, offset: uninitialized
172236nested isset
173- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 3 , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
237+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_IS , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
174238nested empty
175- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 3 , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
239+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_IS , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
176240nested null coalescing
177- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 3 , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
241+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_IS , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
178242nested appending
179243
180244Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
181245Error: Cannot use a scalar value as an array
182- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 1 , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
246+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_W , hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
183247nested appending: appending then append
184248
185249Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
186250Error: Cannot use a scalar value as an array
187- DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: 1, hasOffset: false, checkEmpty: uninitialized, offset: uninitialized
251+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_W, hasOffset: false, checkEmpty: uninitialized, offset: uninitialized
252+ nested unset
253+
254+ Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
255+ Error: Cannot unset offset in a non-array variable
256+ DimensionHandlersNoArrayAccess, read: true, write: false, has: false, unset: false, readType: BP_VAR_UNSET, hasOffset: true, checkEmpty: uninitialized, offset: 'foo'
0 commit comments