bug45139.phpt 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. --TEST--
  2. Bug #45139 (ReflectionProperty returns incorrect declaring class)
  3. --FILE--
  4. <?php
  5. class A {
  6. private $foo;
  7. }
  8. class B extends A {
  9. protected $bar;
  10. private $baz;
  11. private $quux;
  12. }
  13. class C extends B {
  14. public $foo;
  15. private $baz;
  16. protected $quux;
  17. }
  18. $rc = new ReflectionClass('C');
  19. $rp = $rc->getProperty('foo');
  20. var_dump($rp->getDeclaringClass()->getName()); // c
  21. $rc = new ReflectionClass('A');
  22. $rp = $rc->getProperty('foo');
  23. var_dump($rp->getDeclaringClass()->getName()); // A
  24. $rc = new ReflectionClass('B');
  25. $rp = $rc->getProperty('bar');
  26. var_dump($rp->getDeclaringClass()->getName()); // B
  27. $rc = new ReflectionClass('C');
  28. $rp = $rc->getProperty('bar');
  29. var_dump($rp->getDeclaringClass()->getName()); // B
  30. $rc = new ReflectionClass('C');
  31. $rp = $rc->getProperty('baz');
  32. var_dump($rp->getDeclaringClass()->getName()); // C
  33. $rc = new ReflectionClass('B');
  34. $rp = $rc->getProperty('baz');
  35. var_dump($rp->getDeclaringClass()->getName()); // B
  36. $rc = new ReflectionClass('C');
  37. $rp = $rc->getProperty('quux');
  38. var_dump($rp->getDeclaringClass()->getName()); // C
  39. ?>
  40. --EXPECT--
  41. string(1) "C"
  42. string(1) "A"
  43. string(1) "B"
  44. string(1) "B"
  45. string(1) "C"
  46. string(1) "B"
  47. string(1) "C"