//先讲解__call方法的基础使用
//__call魔术方法,当调用一个类的方法,此方法不存在 //就会执行__call方法 class Computer { public function _run() { echo '运行'; } //采用__call()方法屏蔽调用 //__call()里面有两个参数 //第一个参数为调用的那个方法名 //第二个参数为方法中传入的值 public function __call($_methodName,$_argList) { echo $_methodName.'()not exist'; //print_r($_argList); } } $computer = new Computer(); //如果quiet()方法不存在,执行__call()方法 $computer->quiet(); //------------------ class MethodTest { public function __call($name, $arguments) { // 注意: $name 的值区分大小写 echo "Calling object method '$name' " . implode(', ', $arguments). "\n"; } /** PHP 5.3.0之后版本 */ public static function __callStatic($name, $arguments) { // 注意: $name 的值区分大小写 echo "Calling static method '$name' " . implode(', ', $arguments). "\n"; } } $obj = new MethodTest; $obj->runTest('in object context'); MethodTest::runTest('in static context'); // PHP 5.3.0之后版本 //以上例程会输出: //Calling object method 'runTest' in object context //Calling static method 'runTest' in static context