php 5 方法的重载

来源:互联网 发布:51单片机智能交通灯 编辑:程序博客网 时间:2024/04/27 18:20

//php 5 中可以使用 __call() 方法实现方法的重载。
//函数原型为 mixed __call(string name, array arguments)
//mixed 是一个伪类型约定。说明一个参数可以接受多种不同的类型

    class A{
        protected $v;

        public function __construct($v){
            $this->v = $v;
        }

        public function __call($funcname, $paras){

//name为要重载的函数名, arguments 则为调用重载函数时传入的参数所组成的数组,第一个参数在arguments[0]
            if($funcname !== 'add') return null;
            if(count($paras) == 1)    return $this->add1($paras[0]);
            if(count($paras) == 2)    return $this->add2($paras[0], $paras[1]);
            if(count($paras) == 3)    return $this->add3($paras[0], $paras[1], $paras[2]);
        }

//        private function add(){  
//            echo "shabi/n";
//        }

        private function add1($v1){
            echo "调用add1函数/n";
            return $this->v + $v1;
        }

        private function add2($v1, $v2){
            echo "调用add2函数/n";
            return $this->v + $v1 + $v2;;
        }

        private function add3($v1, $v2, $v3){
            echo "调用add3函数/n";
            return $this->v + $v1 + $v2 + $v3;
        }
    }

    $a = new A(100);
    $r = $a->add(1);
    echo $r."/n";
    $r = $a->add(1, 2);
    echo $r."/n";
?>

原创粉丝点击