Skip to content

Commit c47e2b5

Browse files
Deprecate using null as an array offset and when calling array_key_exists()
1 parent 0bf2959 commit c47e2b5

23 files changed

+561
-31
lines changed

Zend/tests/assign_dim_op_undef.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Warning: Undefined variable $a in %s on line %d
1010

1111
Warning: Undefined variable $b in %s on line %d
1212

13+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
14+
1315
Warning: Undefined array key "" in %s on line %d
1416
array(1) {
1517
[""]=>

Zend/tests/bug72543_2.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ unset($ref);
99
$arr[0][$arr[0]] = null;
1010
var_dump($arr);
1111
?>
12-
--EXPECT--
12+
--EXPECTF--
13+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
1314
array(1) {
1415
[0]=>
1516
array(1) {

Zend/tests/gc/bug67314.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ echo "ok\n";
1717
?>
1818
--EXPECTF--
1919
Warning: Undefined variable $i in %s on line %d
20+
21+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
2022
made it once
2123

2224
Warning: Undefined variable $i in %s on line %d
25+
26+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
2327
ok

Zend/tests/list/list_keyed_conversions.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ list(STDIN => $resource) = [];
2121

2222
?>
2323
--EXPECTF--
24+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
25+
2426
Deprecated: Implicit conversion from float 1.5 to int loses precision in %s on line %d
2527
string(0) ""
2628
int(1)

Zend/tests/nullsafe_operator/013.phpt

127 Bytes
Binary file not shown.

Zend/tests/offset_array.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ int(2)
3838
Deprecated: Implicit conversion from float 0.0836 to int loses precision in %s on line %d
3939
int(1)
4040

41+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
42+
4143
Warning: Undefined array key "" in %s on line %d
4244
NULL
4345

Zend/tests/offsets/ArrayObject_container_offset_behaviour.phpt

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,89 @@ OUTPUT;
132132

133133
$EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTF_OUTPUT_FLOAT_OFFSETS) . '$/s';
134134

135+
const EXPECTED_OUTPUT_NULL_OFFSETS = <<<OUTPUT
136+
Read before write:
137+
138+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
139+
140+
Warning: Undefined array key "" in %s on line %d
141+
NULL
142+
Write:
143+
144+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
145+
Read:
146+
147+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
148+
int(5)
149+
Read-Write:
150+
151+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
152+
153+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
154+
isset():
155+
156+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
157+
bool(true)
158+
empty():
159+
160+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
161+
bool(false)
162+
null coalesce:
163+
164+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
165+
int(25)
166+
Reference to dimension:
167+
168+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
169+
Value of reference:
170+
int(25)
171+
Value of container dimension after write to reference (should be int(100) if successful):
172+
173+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
174+
int(100)
175+
unset():
176+
177+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
178+
Nested read:
179+
180+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
181+
182+
Warning: Undefined array key "" in %s on line %d
183+
184+
Warning: Trying to access array offset on null in %s on line %d
185+
NULL
186+
Nested write:
187+
188+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
189+
190+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
191+
Nested Read-Write:
192+
193+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
194+
195+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
196+
Nested isset():
197+
198+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
199+
bool(true)
200+
Nested empty():
201+
202+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
203+
bool(false)
204+
Nested null coalesce:
205+
206+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
207+
208+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
209+
int(30)
210+
Nested unset():
211+
212+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
213+
214+
OUTPUT;
215+
216+
$EXPECTED_OUTPUT_NULL_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT_NULL_OFFSETS) . '$/s';
217+
135218
const EXPECTED_OUTPUT_INVALID_OFFSETS = <<<OUTPUT
136219
Read before write:
137220
Cannot access offset of type %s on ArrayObject
@@ -175,44 +258,82 @@ $EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT
175258
const EXPECTED_OUTPUT_NULL_OFFSET = <<<OUTPUT
176259
Read before write:
177260
261+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 8
262+
178263
Warning: Undefined array key "" in %s on line 8
179264
NULL
180265
Write:
181266
Read:
182267
268+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 22
269+
183270
Warning: Undefined array key "" in %s on line 22
184271
NULL
185272
Read-Write:
186273
274+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 29
275+
187276
Warning: Undefined array key "" in %s on line 29
188277
isset():
278+
279+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 36
189280
bool(false)
190281
empty():
282+
283+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 42
191284
bool(true)
192285
null coalesce:
286+
287+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 48
193288
string(7) "default"
194289
Reference to dimension:
290+
291+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 55
195292
Value of reference:
196293
NULL
197294
Value of container dimension after write to reference (should be int(100) if successful):
295+
296+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 60
198297
int(100)
199298
unset():
299+
300+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 67
200301
Nested read:
201302
303+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 74
304+
202305
Warning: Undefined array key "" in %s on line 74
203306
204307
Warning: Trying to access array offset on null in %s on line 74
205308
NULL
206309
Nested write:
310+
311+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 81
312+
313+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 81
207314
Nested Read-Write:
315+
316+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 88
317+
318+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 88
208319
Nested isset():
320+
321+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 95
209322
bool(true)
210323
Nested empty():
324+
325+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 101
211326
bool(false)
212327
Nested null coalesce:
328+
329+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 107
330+
331+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 107
213332
int(30)
214333
Nested unset():
215334
335+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line 114
336+
216337
OUTPUT;
217338

218339
const EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS = <<<OUTPUT
@@ -323,6 +444,7 @@ foreach ($offsets as $dimension) {
323444
!preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput)
324445
&& !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput)
325446
&& !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput)
447+
&& !preg_match($EXPECTED_OUTPUT_NULL_OFFSETS_REGEX, $varOutput)
326448
&& $varOutput !== EXPECTED_OUTPUT_NULL_OFFSET
327449
&& $varOutput !== EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS
328450
) {
@@ -354,6 +476,7 @@ foreach ($offsets as $offset) {
354476
!preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput)
355477
&& !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput)
356478
&& !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput)
479+
&& !preg_match($EXPECTED_OUTPUT_NULL_OFFSETS_REGEX, $varOutput)
357480
&& $varOutput !== EXPECTED_OUTPUT_NULL_OFFSET
358481
&& $varOutput !== EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS
359482
) {

Zend/tests/offsets/array_container_offset_behaviour.phpt

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,81 @@ OUTPUT;
132132

133133
$EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTF_OUTPUT_FLOAT_OFFSETS) . '$/s';
134134

135+
const EXPECTED_OUTPUT_NULL_OFFSETS = <<<OUTPUT
136+
Read before write:
137+
138+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
139+
140+
Warning: Undefined array key "" in %s on line %d
141+
NULL
142+
Write:
143+
144+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
145+
Read:
146+
147+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
148+
int(5)
149+
Read-Write:
150+
151+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
152+
isset():
153+
bool(true)
154+
empty():
155+
bool(false)
156+
null coalesce:
157+
158+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
159+
int(25)
160+
Reference to dimension:
161+
162+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
163+
Value of reference:
164+
int(25)
165+
Value of container dimension after write to reference (should be int(100) if successful):
166+
167+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
168+
int(100)
169+
unset():
170+
Nested read:
171+
172+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
173+
174+
Warning: Undefined array key "" in %s on line %d
175+
176+
Warning: Trying to access array offset on null in %s on line %d
177+
NULL
178+
Nested write:
179+
180+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
181+
182+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
183+
Nested Read-Write:
184+
185+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
186+
187+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
188+
Nested isset():
189+
190+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
191+
bool(true)
192+
Nested empty():
193+
194+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
195+
bool(false)
196+
Nested null coalesce:
197+
198+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
199+
200+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
201+
int(30)
202+
Nested unset():
203+
204+
Deprecated: Using null as an array offset is deprecated, use an empty string instead in %s on line %d
205+
206+
OUTPUT;
207+
208+
$EXPECTED_OUTPUT_NULL_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT_NULL_OFFSETS) . '$/s';
209+
135210
const EXPECTED_OUTPUT_INVALID_OFFSETS = <<<OUTPUT
136211
Read before write:
137212
Cannot access offset of type %s on array
@@ -273,6 +348,7 @@ foreach ($offsets as $dimension) {
273348
!preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput)
274349
&& !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput)
275350
&& !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput)
351+
&& !preg_match($EXPECTED_OUTPUT_NULL_OFFSETS_REGEX, $varOutput)
276352
&& $varOutput !== EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS
277353
) {
278354
file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_array_container_{$failuresNb}.txt", $varOutput);
@@ -300,6 +376,7 @@ foreach ($offsets as $offset) {
300376
!preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput)
301377
&& !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput)
302378
&& !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput)
379+
&& !preg_match($EXPECTED_OUTPUT_NULL_OFFSETS_REGEX, $varOutput)
303380
&& $varOutput !== EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS
304381
) {
305382
file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_array_container_{$failuresNb}.txt", $varOutput);

0 commit comments

Comments
 (0)