@@ -17,6 +17,11 @@ $o = new DimensionHandlersNoArrayAccess();
17
17
$ o ['foo ' ] = true ;
18
18
exportObject ($ o );
19
19
20
+ echo 'read-write op ' , PHP_EOL ;
21
+ $ o = new DimensionHandlersNoArrayAccess ();
22
+ $ o ['foo ' ] += 10 ;
23
+ exportObject ($ o );
24
+
20
25
echo 'isset op ' , PHP_EOL ;
21
26
$ o = new DimensionHandlersNoArrayAccess ();
22
27
$ r = isset ($ o ['foo ' ]);
@@ -37,6 +42,11 @@ $o = new DimensionHandlersNoArrayAccess();
37
42
$ o [] = true ;
38
43
exportObject ($ o );
39
44
45
+ echo 'unset op ' , PHP_EOL ;
46
+ $ o = new DimensionHandlersNoArrayAccess ();
47
+ unset($ o ['foo ' ]);
48
+ exportObject ($ o );
49
+
40
50
echo 'nested read ' , PHP_EOL ;
41
51
$ o = new DimensionHandlersNoArrayAccess ();
42
52
$ r = $ o ['foo ' ]['bar ' ];
@@ -45,30 +55,51 @@ exportObject($o);
45
55
// Illegal
46
56
//echo 'nested read: appending then read', PHP_EOL;
47
57
//$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
+ //}
50
63
51
64
echo 'nested write ' , PHP_EOL ;
65
+ $ o = new DimensionHandlersNoArrayAccess ();
52
66
try {
53
- $ o = new DimensionHandlersNoArrayAccess ();
54
67
$ o ['foo ' ]['bar ' ] = true ;
55
68
} catch (\Throwable $ e ) {
56
69
echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
57
70
}
58
71
exportObject ($ o );
59
72
60
73
echo 'nested write: appending then write ' , PHP_EOL ;
74
+ $ o = new DimensionHandlersNoArrayAccess ();
61
75
try {
62
- $ o = new DimensionHandlersNoArrayAccess ();
63
76
$ o []['bar ' ] = true ;
64
77
} catch (\Throwable $ e ) {
65
78
echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
66
79
}
67
80
exportObject ($ o );
68
81
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
+
69
100
echo 'nested isset ' , PHP_EOL ;
101
+ $ o = new DimensionHandlersNoArrayAccess ();
70
102
try {
71
- $ o = new DimensionHandlersNoArrayAccess ();
72
103
$ r = isset ($ o ['foo ' ]['bar ' ]);
73
104
} catch (\Throwable $ e ) {
74
105
echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
@@ -80,14 +111,14 @@ exportObject($o);
80
111
//try {
81
112
// $o = new DimensionHandlersNoArrayAccess();
82
113
// $r = isset($o[]['bar']);
83
- // var_dump($o);
84
114
//} catch (\Throwable $e) {
85
115
// echo $e::class, ': ', $e->getMessage(), PHP_EOL;
86
116
//}
117
+ //exportObject($o);
87
118
88
119
echo 'nested empty ' , PHP_EOL ;
120
+ $ o = new DimensionHandlersNoArrayAccess ();
89
121
try {
90
- $ o = new DimensionHandlersNoArrayAccess ();
91
122
$ r = empty ($ o ['foo ' ]['bar ' ]);
92
123
} catch (\Throwable $ e ) {
93
124
echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
@@ -99,14 +130,14 @@ exportObject($o);
99
130
//try {
100
131
// $o = new DimensionHandlersNoArrayAccess();
101
132
// $r = empty($o[]['bar']);
102
- // var_dump($o);
103
133
//} catch (\Throwable $e) {
104
134
// echo $e::class, ': ', $e->getMessage(), PHP_EOL;
105
135
//}
136
+ //exportObject($o);
106
137
107
138
echo 'nested null coalescing ' , PHP_EOL ;
139
+ $ o = new DimensionHandlersNoArrayAccess ();
108
140
try {
109
- $ o = new DimensionHandlersNoArrayAccess ();
110
141
$ r = $ o ['foo ' ]['bar ' ] ?? 'default ' ;
111
142
} catch (\Throwable $ e ) {
112
143
echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
@@ -118,70 +149,108 @@ exportObject($o);
118
149
//try {
119
150
// $o = new DimensionHandlersNoArrayAccess();
120
151
// $r = $o[]['bar'] ?? 'default';
121
- // var_dump($o);
122
152
//} catch (\Throwable $e) {
123
153
// echo $e::class, ': ', $e->getMessage(), PHP_EOL;
124
154
//}
155
+ //exportObject($o);
125
156
126
157
echo 'nested appending ' , PHP_EOL ;
158
+ $ o = new DimensionHandlersNoArrayAccess ();
127
159
try {
128
- $ o = new DimensionHandlersNoArrayAccess ();
129
160
$ o ['foo ' ][] = true ;
130
161
} catch (\Throwable $ e ) {
131
162
echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
132
163
}
133
164
exportObject ($ o );
134
165
135
166
echo 'nested appending: appending then append ' , PHP_EOL ;
167
+ $ o = new DimensionHandlersNoArrayAccess ();
136
168
try {
137
- $ o = new DimensionHandlersNoArrayAccess ();
138
169
$ o [][] = true ;
139
170
} catch (\Throwable $ e ) {
140
171
echo $ e ::class, ': ' , $ e ->getMessage (), PHP_EOL ;
141
172
}
142
173
exportObject ($ o );
143
174
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
+
144
194
?>
145
195
--EXPECTF--
146
196
read 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'
148
198
write op
149
199
DimensionHandlersNoArrayAccess, 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'
150
202
isset op
151
203
DimensionHandlersNoArrayAccess, read: false, write: false, has: true, unset: false, readType: uninitialized, hasOffset: true, checkEmpty: 0, offset: 'foo'
152
204
empty op
153
205
DimensionHandlersNoArrayAccess, read: false, write: false, has: true, unset: false, readType: uninitialized, hasOffset: true, checkEmpty: 1, offset: 'foo'
154
206
null 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'
156
208
appending op
157
209
DimensionHandlersNoArrayAccess, 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'
158
212
nested read
159
213
160
214
Warning: 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'
162
216
nested write
163
217
164
218
Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
165
219
Error: 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'
167
221
nested write: appending then write
168
222
169
223
Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
170
224
Error: 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
172
236
nested 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'
174
238
nested 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'
176
240
nested 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'
178
242
nested appending
179
243
180
244
Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
181
245
Error: 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'
183
247
nested appending: appending then append
184
248
185
249
Notice: Indirect modification of overloaded element of DimensionHandlersNoArrayAccess has no effect in %s on line %d
186
250
Error: 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