<?php header("content-type:text/html;charset=utf-8"); // ## 4. 方法重载 // * `__call()`: 访问未定义的对象方法时会自动调用它 // * `__callStatic()`: 访问未定义的静态类方法时会自动调用它 class Demo4{ // __call(): 访问不存在/不可见对象方法时触发,有两个参数,第一个是方法名,第二个方法的参数(数组) public function __call($name, $arguments){ return '方法名: '.$name.'<br>方法参数列表: ' . '<pre>'.print_r($arguments, true).'不存在'; } //__callStatic(): 访问不存在/不可见的类方法(静态)方法时触发 public static function __callStatic($name, $arguments){ // if($name == 'getInfo2'){ // self::getInfo2($arguments); // } return '方法名: '.$name.'<br>方法参数列表: ' . '<pre>'.print_r($arguments, true).'不存在'; } protected function getInfo1(){ echo 111; } protected static function getInfo2($arguments){ //print_r($arguments); } } $obj = new Demo4(); // 访问不存在或无权访问的对象方法 echo $obj->getInfo1([10,20,30,40],[50,60,70,80]); echo '<hr>'; // 访问不存在或无权访问的静态类方法 // 当存在这个方法,并且为公有的,才会执行getInfo2方法。 echo Demo4::getInfo2('html','css', 'javascript'); echo '<hr>';
点击 "运行实例" 按钮查看在线实例