lsb_015.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. --TEST--
  2. ZE2 Late Static Binding with exceptions
  3. --FILE--
  4. <?php
  5. function foo() {
  6. B::throwException();
  7. }
  8. class C {
  9. public static function bla() {
  10. B::throwException();
  11. }
  12. public static function getException() {
  13. return new Exception();
  14. }
  15. }
  16. class A {
  17. public static function throwException_after() {
  18. C::bla();
  19. }
  20. public static function throwException() {
  21. throw C::getException();
  22. }
  23. public static function test() {
  24. static::who();
  25. }
  26. public static function who() {
  27. echo "A\n";
  28. }
  29. public static function mycatch() {
  30. try {
  31. static::who();
  32. B::throwException_after();
  33. } catch(Exception $e) {
  34. static::who();
  35. A::test();
  36. static::who();
  37. B::test();
  38. static::who();
  39. self::simpleCatch();
  40. static::who();
  41. }
  42. }
  43. public static function simpleCatch() {
  44. try {
  45. static::who();
  46. throw new Exception();
  47. } catch (Exception $e) {
  48. static::who();
  49. }
  50. }
  51. }
  52. class B extends A {
  53. public static function who() {
  54. echo "B\n";
  55. }
  56. }
  57. echo "via A:\n";
  58. A::myCatch();
  59. echo "via B:\n";
  60. B::myCatch();
  61. ?>
  62. --EXPECT--
  63. via A:
  64. A
  65. A
  66. A
  67. A
  68. B
  69. A
  70. A
  71. A
  72. A
  73. via B:
  74. B
  75. B
  76. A
  77. B
  78. B
  79. B
  80. B
  81. B
  82. B