bug45186.phpt 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --TEST--
  2. Bug #45186 (__call depends on __callstatic in class scope)
  3. --FILE--
  4. <?php
  5. class bar {
  6. public function __call($a, $b) {
  7. print "__call:\n";
  8. var_dump($a);
  9. }
  10. static public function __callstatic($a, $b) {
  11. print "__callstatic:\n";
  12. var_dump($a);
  13. }
  14. public function test() {
  15. self::ABC();
  16. bar::ABC();
  17. call_user_func(array('BAR', 'xyz'));
  18. call_user_func('BAR::www');
  19. call_user_func(array('self', 'y'));
  20. call_user_func('self::y');
  21. }
  22. static function x() {
  23. print "ok\n";
  24. }
  25. }
  26. $x = new bar;
  27. $x->test();
  28. call_user_func(array('BAR','x'));
  29. call_user_func('BAR::www');
  30. try {
  31. call_user_func('self::y');
  32. } catch (TypeError $e) {
  33. echo $e->getMessage(), "\n";
  34. }
  35. ?>
  36. --EXPECT--
  37. __call:
  38. string(3) "ABC"
  39. __call:
  40. string(3) "ABC"
  41. __call:
  42. string(3) "xyz"
  43. __call:
  44. string(3) "www"
  45. __call:
  46. string(1) "y"
  47. __call:
  48. string(1) "y"
  49. ok
  50. __callstatic:
  51. string(3) "www"
  52. call_user_func(): Argument #1 ($callback) must be a valid callback, cannot access "self" when no class scope is active