方法重载:当调用一个不存在或者权限不够的方法的时候,会自动调用__call()方法
public function __call($name,$args){} :用对象调用方法
public static function __callStatic($name,$args){}: 用类调用静态方法
$name:被调用的方法名
$args:被调用的方法的参数列表数组
<?php //PHP方法重载 class Person{ //方法 private function test(){ echo __METHOD__; } protected static function test1(){ echo __METHOD__; } //增加魔术方法 //有两个参数:第一个是方法名,第二个是参数数组 public function __call($name,$args){ //var_dump($name);//方法名字 //var_dump($args);//参数数组 //定义允许访问列表 $allow = array(‘test‘); if(in_array($name,$allow)) $this->$name(); //可变方法 else return false; } //增加一个静态方法的访问 public static function __callStatic($name,$args){ $allow = array(‘test1‘); if(in_array($name,$allow)) self::$name(); //可变方法 else return false; } } echo ‘<pre>‘; //实例化 $person = new Person; //访问私有方法 //没有魔术方法之前 //$person->test(); //出错 //Person::test1(); //出错 $person->test(); //有了__call魔术方法,且允许访问 var_dump($person->test2()); //false Person::test1();
时间: 2024-10-06 21:59:58