php---魔术方法(Call()方法的重要之处)

我们都知道,在PHP5中并没有真正的支持重载。但是我们可以想办法去实现它,借助的工具就是__call()。我们来看例子。

class Test{
    public function __call($fun,$args) {
        if(method_exists($this, $fun.count($args))){
            return call_user_func_array(array(&$this,$fun.count($args)),$args);
        }else{
            throw new Exception('调用了未知的方法:'.get_class($this).'->'.$fun);
        }
    }
    
    //一个参数的方法
    public function fun1($a){
        echo '你在调用一个参数的方法,参数为'.$a;
    }
    
    //两个参数的方法
    public function fun2($a,$b){
        echo '你在调用两个参数的方法,参数为:'.$a.'和'.$b;
    }
     
}

$test = new Test();
$test->fun('a');
$test->fun('a','b');
$test->fun('q','q','q');

这样我们基本就可以完成了重载了。


你可能感兴趣的:(php---魔术方法(Call()方法的重要之处))