__call_004.phpt 890 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. --TEST--
  2. When __call() is invoked via ::, ensure current scope's __call() is favoured over the specified class's __call().
  3. --FILE--
  4. <?php
  5. class A {
  6. function __call($strMethod, $arrArgs) {
  7. echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n";
  8. var_dump($this);
  9. }
  10. }
  11. class B extends A {
  12. function __call($strMethod, $arrArgs) {
  13. echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n";
  14. var_dump($this);
  15. }
  16. function test() {
  17. A::test1(1,'a');
  18. B::test2(1,'a');
  19. self::test3(1,'a');
  20. parent::test4(1,'a');
  21. }
  22. }
  23. $b = new B();
  24. $b->test();
  25. ?>
  26. --EXPECT--
  27. In B::__call(test1, array(1,a))
  28. object(B)#1 (0) {
  29. }
  30. In B::__call(test2, array(1,a))
  31. object(B)#1 (0) {
  32. }
  33. In B::__call(test3, array(1,a))
  34. object(B)#1 (0) {
  35. }
  36. In B::__call(test4, array(1,a))
  37. object(B)#1 (0) {
  38. }