Category
Regression: · php-src-strict · SPL soft-null
Problem
SplDoublyLinkedList::{offsetGet,offsetUnset,offsetExists}(null) under non-strict types must emit E_DEPRECATED for parameter #1 ($index) and soft-coerce to 0. Today:
offsetGet / offsetUnset → TypeError
offsetExists → silent true (no DEP)
offsetSet(null) remains append-without-DEP (#31731).
Probed 2026-08-17 — host Zend PHP 8.2+ vs php bin/vm.php.
| Repro |
Zend 8.2+ |
VM (2026-08-17) |
offsetGet(null) |
DEP + value at 0 |
TypeError |
offsetUnset(null) |
DEP + removes index 0 |
TypeError |
offsetExists(null) |
DEP + true |
silent true |
php-src reference
PHP implementation target
ext/spl/SplDoublyLinkedListBuiltin.php — coerceIndex soft-null DEP for get/unset/exists
Repro
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/maintainer_gap_dllist_offset_null.php'
Done when
Category
Regression:· php-src-strict · SPL soft-nullProblem
SplDoublyLinkedList::{offsetGet,offsetUnset,offsetExists}(null)under non-strict types must emitE_DEPRECATEDfor parameter#1 ($index)and soft-coerce to0. Today:offsetGet/offsetUnset→TypeErroroffsetExists→ silenttrue(no DEP)offsetSet(null)remains append-without-DEP (#31731).Probed 2026-08-17 — host Zend PHP 8.2+ vs
php bin/vm.php.offsetGet(null)offsetUnset(null)offsetExists(null)php-src reference
ext/spl/spl_dllist.c— dimension read/isset/unset +Z_PARAM_LONGPHP implementation target
ext/spl/SplDoublyLinkedListBuiltin.php—coerceIndexsoft-null DEP for get/unset/existsRepro
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/maintainer_gap_dllist_offset_null.php'Done when