From be77a48a715e9cd7089334b9506eadc0a4795e9e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gustavo=20Andr=C3=A9=20dos=20Santos=20Lopes?= Date: Tue, 26 Oct 2010 18:47:10 +0000 Subject: [PATCH] - Fixed ReflectionProperty::isDefault() giving a wrong result for properties obtained with ReflectionClass::getProperties(). --- ext/reflection/php_reflection.c | 1 + .../tests/ReflectionParameter_isDefault.phpt | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 ext/reflection/tests/ReflectionParameter_isDefault.phpt diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 67fc992ead..7f66d0d7bd 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -3902,6 +3902,7 @@ static int _adddynproperty(zval **pptr TSRMLS_DC, int num_args, va_list args, ze ZVAL_STRINGL(&member, hash_key->arKey, hash_key->nKeyLength-1, 0); if (zend_get_property_info(ce, &member, 1 TSRMLS_CC) == &EG(std_property_info)) { MAKE_STD_ZVAL(property); + EG(std_property_info).flags = ZEND_ACC_IMPLICIT_PUBLIC; reflection_property_factory(ce, &EG(std_property_info), property TSRMLS_CC); add_next_index_zval(retval, property); } diff --git a/ext/reflection/tests/ReflectionParameter_isDefault.phpt b/ext/reflection/tests/ReflectionParameter_isDefault.phpt new file mode 100644 index 0000000000..657077093b --- /dev/null +++ b/ext/reflection/tests/ReflectionParameter_isDefault.phpt @@ -0,0 +1,34 @@ +--TEST-- +ReflectionParameter::isDefault() +--FILE-- +myprop = null; + +$ro = new ReflectionObject($a); +$props = $ro->getProperties(); +$prop1 = $props[0]; +var_dump($prop1->isDefault()); +$prop2 = $props[1]; +var_dump($prop2->isDefault()); + +var_dump($ro->getProperty('defprop')->isDefault()); +var_dump($ro->getProperty('myprop')->isDefault()); + +$prop1 = new ReflectionProperty($a, 'defprop'); +$prop2 = new ReflectionProperty($a, 'myprop'); +var_dump($prop1->isDefault()); +var_dump($prop2->isDefault()); +?> +==DONE== +--EXPECT-- +bool(true) +bool(false) +bool(true) +bool(false) +bool(true) +bool(false) +==DONE== -- 2.40.0