fr47160.phpt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. --TEST--
  2. Calling method from array
  3. --FILE--
  4. <?php
  5. class Hello {
  6. public function world($x) {
  7. echo "Hello, $x\n";return $this;
  8. }
  9. }
  10. class Hello2 {
  11. static public function world($x) {
  12. echo "Hello, $x\n";
  13. }
  14. }
  15. class Magic {
  16. public function __call($f, $a) {
  17. printf("%s called (%s)!\n", __METHOD__, $f);
  18. }
  19. }
  20. class Magic2 {
  21. public static function __callStatic($f, $a) {
  22. printf("%s called (%s)!\n", __METHOD__, $f);
  23. }
  24. }
  25. class Magic3 {
  26. public static function __callStatic($f, $a) {
  27. printf("%s called (%s)!\n", __METHOD__, $f);
  28. }
  29. public function __call($f, $a) {
  30. printf("%s called (%s)!\n", __METHOD__, $f);
  31. }
  32. }
  33. $h= new Hello;
  34. $f = array($h,'world');
  35. var_dump($f('again'));
  36. var_dump(call_user_func($f, 'again'));
  37. printf("-----\n");
  38. function bar() {
  39. return array(new Hello,'world');
  40. }
  41. $f = bar();
  42. var_dump($f('there'));
  43. var_dump(call_user_func($f, 'there'));
  44. printf("-----\n");
  45. $x = function ($c,$v) { return array($c, $v); };
  46. $c = new Hello;
  47. $m = 'world';
  48. $f = $x($c, $m);
  49. var_dump($f('devs'));
  50. var_dump(call_user_func($f, 'devs'));
  51. printf("-----\n");
  52. $f = array(new Magic, 'foo');
  53. $f();
  54. call_user_func($f);
  55. printf("-----\n");
  56. $f = array('Magic2', 'foo');
  57. $f();
  58. call_user_func($f);
  59. printf("-----\n");
  60. $f = array('Magic3', 'foo');
  61. $f();
  62. call_user_func($f);
  63. printf("-----\n");
  64. $f = array(new Magic3, 'foo');
  65. $f();
  66. call_user_func($f);
  67. printf("-----\n");
  68. $f = array(new Hello2, 'world');
  69. var_dump($f('you'));
  70. var_dump(call_user_func($f, 'you'));
  71. ?>
  72. --EXPECTF--
  73. Hello, again
  74. object(Hello)#%d (0) {
  75. }
  76. Hello, again
  77. object(Hello)#%d (0) {
  78. }
  79. -----
  80. Hello, there
  81. object(Hello)#%d (0) {
  82. }
  83. Hello, there
  84. object(Hello)#%d (0) {
  85. }
  86. -----
  87. Hello, devs
  88. object(Hello)#%d (0) {
  89. }
  90. Hello, devs
  91. object(Hello)#%d (0) {
  92. }
  93. -----
  94. Magic::__call called (foo)!
  95. Magic::__call called (foo)!
  96. -----
  97. Magic2::__callStatic called (foo)!
  98. Magic2::__callStatic called (foo)!
  99. -----
  100. Magic3::__callStatic called (foo)!
  101. Magic3::__callStatic called (foo)!
  102. -----
  103. Magic3::__call called (foo)!
  104. Magic3::__call called (foo)!
  105. -----
  106. Hello, you
  107. NULL
  108. Hello, you
  109. NULL