bug45186_2.phpt 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. --TEST--
  2. Bug #45186.2 (__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. public function test() {
  11. self::ABC();
  12. bar::ABC();
  13. call_user_func(array('BAR', 'xyz'));
  14. call_user_func('BAR::www');
  15. call_user_func(array('self', 'y'));
  16. call_user_func('self::y');
  17. }
  18. static function x() {
  19. print "ok\n";
  20. }
  21. }
  22. $x = new bar;
  23. $x->test();
  24. call_user_func(array('BAR','x'));
  25. try {
  26. call_user_func('BAR::www');
  27. } catch (TypeError $e) {
  28. echo $e->getMessage(), "\n";
  29. }
  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. call_user_func(): Argument #1 ($callback) must be a valid callback, class bar does not have a method "www"
  51. call_user_func(): Argument #1 ($callback) must be a valid callback, cannot access "self" when no class scope is active