您的位置:首页 > 编程语言 > PHP开发

php 5 方法的重载

2010-10-25 22:35 281 查看
//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";
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: