mirror of
https://github.com/php/php-src.git
synced 2024-11-24 02:15:04 +08:00
Fixed bug #75242
This commit is contained in:
parent
ccb113c3e5
commit
ec142f2c86
2
NEWS
2
NEWS
@ -20,6 +20,8 @@ PHP NEWS
|
||||
- SPL:
|
||||
. Fixed bug #75717 (RecursiveArrayIterator does not traverse arrays by
|
||||
reference). (Nikita)
|
||||
. Fixed bug #75242 (RecursiveArrayIterator doesn't have constants from parent
|
||||
class). (Nikita)
|
||||
|
||||
04 Jan 2018, PHP 7.1.13
|
||||
|
||||
|
@ -1999,16 +1999,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
Normal file
36
ext/spl/tests/bug75242.phpt
Normal file
@ -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…
Reference in New Issue
Block a user