1--TEST-- 2Indirect method call by array - Testing exception and method magics 3--FILE-- 4<?php 5 6class foo { 7 static public function abc() { 8 throw new Exception('foo'); 9 } 10 public function __call($a, $b) { 11 printf("From %s:\n", __METHOD__); 12 throw new Exception($a); 13 } 14 static public function __callStatic($a, $b) { 15 printf("From %s:\n", __METHOD__); 16 throw new Exception($a); 17 } 18} 19 20 21$arr = array('foo', 'abc'); 22 23try { 24 $arr(); 25} 26catch (Exception $e) { 27 echo $e->getMessage(), "\n"; 28} 29 30$arr = array('foo', '123'); 31 32try { 33 $arr(); 34} 35catch (Exception $e) { 36 echo $e->getMessage(), "\n"; 37} 38 39 40echo "------\n"; 41 42$foo = new foo; 43$arr = array($foo, 'abc'); 44 45try { 46 $arr(); 47} 48catch (Exception $e) { 49 echo $e->getMessage(), "\n"; 50} 51 52 53$foo = new foo; 54$arr = array($foo, '123'); 55 56try { 57 $arr(); 58} 59catch (Exception $e) { 60 echo $e->getMessage(), "\n"; 61} 62 63?> 64--EXPECTF-- 65foo 66From foo::__callStatic: 67123 68------ 69foo 70From foo::__call: 71123 72