MFH: Fixed bug #48336 (ReflectionProperty::getDeclaringClass() does not

work with redeclared property)
(patch by Markus dot Lidel at shadowconnect dot com)
This commit is contained in:
Arnaud Le Blanc 2009-05-21 16:01:37 +00:00
parent 9aca3c04a0
commit 5c5dcf5e7a
2 changed files with 48 additions and 0 deletions

View File

@ -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;
}

View File

@ -0,0 +1,44 @@
--TEST--
Bug #48286 (ReflectionProperty::getDeclaringClass() does not work with redeclared properties)
--FILE--
<?php
class A {
}
class B extends A {
static protected $prop;
}
class C extends B {
static protected $prop;
}
class D extends C {
}
class E extends D {
}
class F extends E {
static protected $prop;
}
$class = 'A';
for($class = 'A'; $class <= 'F'; $class ++) {
print($class.' => ');
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