Category
Regression · php-src-strict · stdlib (ext/intl ResourceBundle)
Problem
ResourceBundle::create('en', 'ICUDATA-region') (and count() / foreach) disagree with Zend/php-src on the host ICU catalog: VM exposes an extra top-level key Countries%chagos and a larger Countries child count.
| Repro |
Zend 8.2.32 |
VM (2026-07-24) |
count(ResourceBundle::create('en','ICUDATA-region')) |
3 |
4 |
| Top-level keys |
Countries, Countries%short, Countries%variant |
+ Countries%chagos |
count($rb->get('Countries')) |
294 |
295 |
Same ICU library family should yield Zend-identical key sets for the stock ICUDATA-region table; extra keys indicate wrong ures open path, alias expansion, or unfiltered enumeration in VmResourceBundle.
php-src reference
PHP implementation target
Repro
./script/docker-exec.sh -- bash -lc 'cat > /tmp/rb_region.php <<'\''PHP'\''
<?php
$r = ResourceBundle::create(\"en\", \"ICUDATA-region\");
echo \"count=\", count($r), \"\n\";
foreach ($r as $k => $_) { echo $k, \"\n\"; }
$c = $r->get(\"Countries\");
echo \"countries=\", count($c), \"\n\";
PHP
php /tmp/rb_region.php; php bin/vm.php /tmp/rb_region.php'
Done when
Category
Regression· php-src-strict · stdlib (ext/intl ResourceBundle)Problem
ResourceBundle::create('en', 'ICUDATA-region')(andcount()/foreach) disagree with Zend/php-src on the host ICU catalog: VM exposes an extra top-level keyCountries%chagosand a largerCountrieschild count.count(ResourceBundle::create('en','ICUDATA-region'))Countries%chagoscount($rb->get('Countries'))Same ICU library family should yield Zend-identical key sets for the stock
ICUDATA-regiontable; extra keys indicate wrong ures open path, alias expansion, or unfiltered enumeration inVmResourceBundle.php-src reference
ext/intl/resourcebundle/resourcebundle.c— create / count / iterationext/intl/resourcebundle/resourcebundle_iterator.cures_open/ures_getSize/ures_getByIndex/ures_getKeyPHP implementation target
ext/intl/VmResourceBundle.php— open/enumerate path forICUDATA-regionmust match php-src (fallback locale, alias handling, table filter)Repro
Done when
count+ foreach key order/set forICUDATA-regionmatch Zend on the same ICUCountrieschild count matches Zendtest/unit/IntlModuleTest.phportest/compliance/cases/