bug30828.phpt 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. --TEST--
  2. Bug #30828 (debug_backtrace() reports incorrect class in overridden methods)
  3. --FILE--
  4. <?php
  5. class A {
  6. function __construct() {
  7. debug_print_backtrace();
  8. $bt = debug_backtrace();
  9. foreach ($bt as $t) {
  10. print $t['class'].$t['type'].$t['function']."\n";
  11. }
  12. }
  13. function foo() {
  14. debug_print_backtrace();
  15. $bt = debug_backtrace();
  16. foreach ($bt as $t) {
  17. print $t['class'].$t['type'].$t['function']."\n";
  18. }
  19. }
  20. static function bar() {
  21. debug_print_backtrace();
  22. $bt = debug_backtrace();
  23. foreach ($bt as $t) {
  24. print $t['class'].$t['type'].$t['function']."\n";
  25. }
  26. }
  27. }
  28. class B extends A {
  29. function __construct() {
  30. parent::__construct();
  31. }
  32. function foo() {
  33. parent::foo();
  34. }
  35. static function bar() {
  36. parent::bar();
  37. }
  38. }
  39. $b = new B();
  40. $b->foo();
  41. B::bar();
  42. ?>
  43. --EXPECTF--
  44. #0 %sbug30828.php(30): A->__construct()
  45. #1 %sbug30828.php(42): B->__construct()
  46. A->__construct
  47. B->__construct
  48. #0 %sbug30828.php(34): A->foo()
  49. #1 %sbug30828.php(43): B->foo()
  50. A->foo
  51. B->foo
  52. #0 %sbug30828.php(38): A::bar()
  53. #1 %sbug30828.php(44): B::bar()
  54. A::bar
  55. B::bar