Browse Source

Merge branch 'PHP-7.2'

pull/2987/head
Nikita Popov 9 years ago
parent
commit
d90797a896
  1. 8
      ext/spl/spl_array.c
  2. 36
      ext/spl/tests/bug75242.phpt

8
ext/spl/spl_array.c

@ -2025,16 +2025,16 @@ PHP_MINIT_FUNCTION(spl_array)
memcpy(&spl_handler_ArrayIterator, &spl_handler_ArrayObject, sizeof(zend_object_handlers));
spl_ce_ArrayIterator->get_iterator = spl_array_get_iterator;
REGISTER_SPL_SUB_CLASS_EX(RecursiveArrayIterator, ArrayIterator, spl_array_object_new, spl_funcs_RecursiveArrayIterator);
REGISTER_SPL_IMPLEMENTS(RecursiveArrayIterator, RecursiveIterator);
spl_ce_RecursiveArrayIterator->get_iterator = spl_array_get_iterator;
REGISTER_SPL_CLASS_CONST_LONG(ArrayObject, "STD_PROP_LIST", SPL_ARRAY_STD_PROP_LIST);
REGISTER_SPL_CLASS_CONST_LONG(ArrayObject, "ARRAY_AS_PROPS", SPL_ARRAY_ARRAY_AS_PROPS);
REGISTER_SPL_CLASS_CONST_LONG(ArrayIterator, "STD_PROP_LIST", SPL_ARRAY_STD_PROP_LIST);
REGISTER_SPL_CLASS_CONST_LONG(ArrayIterator, "ARRAY_AS_PROPS", SPL_ARRAY_ARRAY_AS_PROPS);
REGISTER_SPL_SUB_CLASS_EX(RecursiveArrayIterator, ArrayIterator, spl_array_object_new, spl_funcs_RecursiveArrayIterator);
REGISTER_SPL_IMPLEMENTS(RecursiveArrayIterator, RecursiveIterator);
spl_ce_RecursiveArrayIterator->get_iterator = spl_array_get_iterator;
REGISTER_SPL_CLASS_CONST_LONG(RecursiveArrayIterator, "CHILD_ARRAYS_ONLY", SPL_ARRAY_CHILD_ARRAYS_ONLY);
return SUCCESS;

36
ext/spl/tests/bug75242.phpt

@ -0,0 +1,36 @@
--TEST--
Bug #75242: RecursiveArrayIterator doesn't have constants from parent class
--FILE--
<?php
class Foo extends ArrayIterator { }
$r = new ReflectionClass(Foo::class);
var_dump($r->getConstants());
$r = new ReflectionClass(ArrayIterator::class);
var_dump($r->getConstants());
$r = new ReflectionClass(RecursiveArrayIterator::class);
var_dump($r->getConstants());
?>
--EXPECT--
array(2) {
["STD_PROP_LIST"]=>
int(1)
["ARRAY_AS_PROPS"]=>
int(2)
}
array(2) {
["STD_PROP_LIST"]=>
int(1)
["ARRAY_AS_PROPS"]=>
int(2)
}
array(3) {
["STD_PROP_LIST"]=>
int(1)
["ARRAY_AS_PROPS"]=>
int(2)
["CHILD_ARRAYS_ONLY"]=>
int(4)
}
Loading…
Cancel
Save