Category
Regression: · php-src-strict · SPL soft-null
Problem
MultipleIterator::setFlags(null) under non-strict types emits E_DEPRECATED and soft-coerces to 0, but the deprecation cites parameter #0 ($flags). Zend cites parameter #1. Sibling soft-null setters: RegexIterator (#31748), CachingIterator (#31694).
Probed 2026-08-17 — host Zend PHP 8.2+ vs php bin/vm.php.
| Repro |
Zend 8.2+ |
VM (2026-08-17) |
$m->setFlags(null) then getFlags() |
E_DEPRECATED parameter #1 ($flags) + 0 |
E_DEPRECATED parameter #0 ($flags) + 0 |
php-src reference
PHP implementation target
Repro
./script/docker-exec.sh -- bash -lc 'php test/repro/maintainer_gap_multipleiterator_setflags_null.php'
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/maintainer_gap_multipleiterator_setflags_null.php'
Done when
Category
Regression:· php-src-strict · SPL soft-nullProblem
MultipleIterator::setFlags(null)under non-strict types emitsE_DEPRECATEDand soft-coerces to0, but the deprecation cites parameter #0 ($flags). Zend cites parameter #1. Sibling soft-null setters: RegexIterator (#31748), CachingIterator (#31694).Probed 2026-08-17 — host Zend PHP 8.2+ vs
php bin/vm.php.$m->setFlags(null)thengetFlags()E_DEPRECATEDparameter #1 ($flags) +0E_DEPRECATEDparameter #0 ($flags) +0php-src reference
ext/spl/spl_iterators.c—SPL_METHOD(MultipleIterator, setFlags)/Z_PARAM_LONGext/spl/spl_iterators.stub.php—setFlags(int $flags)PHP implementation target
ext/spl/MultipleIteratorBuiltin.php—MultipleIteratorSetFlags::executeusesparseIntBuiltinArg(..., 0, 'flags'); switch toVmMath::parseZParamLongBuiltinArgForFrame($frame, 1, 'MultipleIterator::setFlags', 1, 'flags')like CachingIterator (Regression: CachingIterator::setFlags(null) TypeError — Zend E_DEPRECATED soft coerce (ext/spl/spl_iterators.c) #31694); no newruntime/*.cRepro
Done when
setFlags(null)emits Zend-matchingE_DEPRECATEDciting parameter Php stdlib specs implementation #1 ($flags) then stores0on VM; JIT agrees.phptguard undertest/compliance/cases/(SPL / MultipleIterator)