From: Arnaud Le Blanc Date: Thu, 21 May 2009 16:01:37 +0000 (+0000) Subject: MFH: Fixed bug #48336 (ReflectionProperty::getDeclaringClass() does not X-Git-Tag: php-5.3.0RC3~179 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c5dcf5e7ae716570a03d45a2df18abb7de229e3;p=php MFH: Fixed bug #48336 (ReflectionProperty::getDeclaringClass() does not work with redeclared property) (patch by Markus dot Lidel at shadowconnect dot com) --- diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 5e14ec4fbe..93fb1701fb 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -4603,6 +4603,10 @@ ZEND_METHOD(reflection_property, getDeclaringClass) break; } ce = tmp_ce; + if (tmp_ce == tmp_info->ce) { + /* declared in this class, done */ + break; + } tmp_ce = tmp_ce->parent; } diff --git a/ext/reflection/tests/bug48336.phpt b/ext/reflection/tests/bug48336.phpt new file mode 100644 index 0000000000..ee90675f0c --- /dev/null +++ b/ext/reflection/tests/bug48336.phpt @@ -0,0 +1,44 @@ +--TEST-- +Bug #48286 (ReflectionProperty::getDeclaringClass() does not work with redeclared properties) +--FILE-- + '); + try { + $rp = new ReflectionProperty($class, 'prop'); + print($rp->getDeclaringClass()->getName()); + } catch(Exception $e) { + print('N/A'); + } + print("\n"); +} +?> +--EXPECT-- +A => N/A +B => B +C => C +D => C +E => C +F => F