bug69676_3.phpt 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. --TEST--
  2. Bug #69676: Resolution of self::FOO in class constants not correct (variation)
  3. --FILE--
  4. <?php
  5. class P {
  6. const N = 'P';
  7. }
  8. class A extends P {
  9. const selfN = self::N;
  10. const parentN = parent::N;
  11. const N = 'A';
  12. }
  13. class B extends A {
  14. const N = 'B';
  15. }
  16. var_dump(B::selfN); // A
  17. var_dump(B::parentN); // P
  18. class A2 {
  19. const selfN = self::N;
  20. const N = 'A2';
  21. }
  22. class B2 extends A2 {
  23. const indSelfN = self::selfN;
  24. const N = 'B2';
  25. }
  26. class C2 extends B2 {
  27. const N = 'C2';
  28. }
  29. var_dump(C2::indSelfN); // A2
  30. class A3 {
  31. const selfN = self::N;
  32. const N = 'A3';
  33. }
  34. class B3 extends A3 {
  35. const exprSelfN = "expr" . self::selfN;
  36. const N = 'B3';
  37. }
  38. class C3 extends B3 {
  39. const N = 'C3';
  40. }
  41. var_dump(C3::exprSelfN); // exprA3
  42. class A4 {
  43. const selfN = self::N;
  44. const N = 'A4';
  45. }
  46. class B4 extends A4 {
  47. const N = 'B4';
  48. public $prop = self::selfN;
  49. }
  50. class C4 extends B4 {
  51. const N = 'C4';
  52. }
  53. var_dump((new C4)->prop); // A4
  54. ?>
  55. --EXPECT--
  56. string(1) "A"
  57. string(1) "P"
  58. string(2) "A2"
  59. string(6) "exprA3"
  60. string(2) "A4"