indirect_call_array_003.phpt 723 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. --TEST--
  2. Indirect method call by array - Calling __call() and __callStatic()
  3. --FILE--
  4. <?php
  5. class foo {
  6. public function __call($a, $b) {
  7. printf("From %s:\n", __METHOD__);
  8. var_dump($a);
  9. var_dump($this);
  10. }
  11. static public function __callStatic($a, $b) {
  12. printf("From %s:\n", __METHOD__);
  13. var_dump($a);
  14. var_dump($this);
  15. }
  16. }
  17. $arr = array('foo', 'abc');
  18. try {
  19. $arr();
  20. } catch (Throwable $e) {
  21. echo "Exception: " . $e->getMessage() . "\n";
  22. }
  23. $foo = new foo;
  24. $arr = array($foo, 'abc');
  25. $arr();
  26. ?>
  27. --EXPECTF--
  28. From foo::__callStatic:
  29. string(3) "abc"
  30. Exception: Using $this when not in object context
  31. From foo::__call:
  32. string(3) "abc"
  33. object(foo)#%d (0) {
  34. }