bug55214.phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. --TEST--
  2. Bug #55214 (Use of __CLASS__ within trait returns trait name not class name)
  3. --FILE--
  4. <?php
  5. trait ATrait {
  6. public static $static_var = __CLASS__;
  7. public $var = __CLASS__;
  8. public static function get_class_name() {
  9. return __CLASS__;
  10. }
  11. public function get_class_name_obj() {
  12. return __CLASS__;
  13. }
  14. public static function get_class_name2() {
  15. return self::$static_var;
  16. }
  17. public function get_class_name_obj2() {
  18. return $this->var;
  19. }
  20. }
  21. trait Indirect {
  22. use ATrait;
  23. }
  24. class SomeClass {
  25. use ATrait;
  26. }
  27. class UsingIndirect {
  28. use Indirect;
  29. }
  30. $r = SomeClass::get_class_name();
  31. var_dump($r);
  32. $r = SomeClass::get_class_name2();
  33. var_dump($r);
  34. $o = new SomeClass();
  35. $r = $o->get_class_name_obj();
  36. var_dump($r);
  37. $r = $o->get_class_name_obj2();
  38. var_dump($r);
  39. $r = UsingIndirect::get_class_name();
  40. var_dump($r);
  41. $r = UsingIndirect::get_class_name2();
  42. var_dump($r);
  43. $o = new UsingIndirect();
  44. $r = $o->get_class_name_obj();
  45. var_dump($r);
  46. $r = $o->get_class_name_obj2();
  47. var_dump($r);
  48. ?>
  49. --EXPECT--
  50. string(9) "SomeClass"
  51. string(9) "SomeClass"
  52. string(9) "SomeClass"
  53. string(9) "SomeClass"
  54. string(13) "UsingIndirect"
  55. string(13) "UsingIndirect"
  56. string(13) "UsingIndirect"
  57. string(13) "UsingIndirect"