mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fixed bug #75242
This commit is contained in:
parent
ccb113c3e5
commit
ec142f2c86
3 changed files with 42 additions and 4 deletions
2
NEWS
2
NEWS
|
@ -20,6 +20,8 @@ PHP NEWS
|
||||||
- SPL:
|
- SPL:
|
||||||
. Fixed bug #75717 (RecursiveArrayIterator does not traverse arrays by
|
. Fixed bug #75717 (RecursiveArrayIterator does not traverse arrays by
|
||||||
reference). (Nikita)
|
reference). (Nikita)
|
||||||
|
. Fixed bug #75242 (RecursiveArrayIterator doesn't have constants from parent
|
||||||
|
class). (Nikita)
|
||||||
|
|
||||||
04 Jan 2018, PHP 7.1.13
|
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));
|
memcpy(&spl_handler_ArrayIterator, &spl_handler_ArrayObject, sizeof(zend_object_handlers));
|
||||||
spl_ce_ArrayIterator->get_iterator = spl_array_get_iterator;
|
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, "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(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, "STD_PROP_LIST", SPL_ARRAY_STD_PROP_LIST);
|
||||||
REGISTER_SPL_CLASS_CONST_LONG(ArrayIterator, "ARRAY_AS_PROPS", SPL_ARRAY_ARRAY_AS_PROPS);
|
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);
|
REGISTER_SPL_CLASS_CONST_LONG(RecursiveArrayIterator, "CHILD_ARRAYS_ONLY", SPL_ARRAY_CHILD_ARRAYS_ONLY);
|
||||||
|
|
||||||
return SUCCESS;
|
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…
Add table
Add a link
Reference in a new issue