PHP 类与对象(重载)

PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。


PHP允许通过实现特殊的代理方法对属性的访问和方法的调用进行重载,这


些代理方法将在相关的属性或者方法不存在时调用。该特性让你在中断这些


动作并定义你自己的功能时获得巨大的灵活性。



1.属性的重载


属性的重载是通过__set__get__isset__unset来分别实现对不存在的属性的


赋值、读取、判断属性是否设置、销毁属性。


例1:


class Car{


    private $ary=array();
    
    public function __set($key,$val){

        $this->ary[$key]=$val;

    }
    
    public function __get($key){

        if(isset($this->ary[$key])){

            return $this->ary[$key];

        }

        return null;

    }
    
    public function __isset($key){

        if(isset($this->ary[$key])){

            return true;

        }

        return false;

    }
    
    public function __unset($key){


        unset($this->ary[$key]);

    }

}

$car=new Car();

$car->name="小汽车"; //name属性动态创建并赋值

echo $car->name; //输出"小汽车"



2.方法的重载


方法的重载通过__call来实现,当调用不存在的方法的时候,将会转


为参数调用__call方法。当调用不存在的静态方法时会使用__callStatic


重载。


例2:


class Car{


    public $speed=0;

    public function __call($name,$args){

        if($name=="speedUp"){

            $this->speed+=50;

        }

    }

}

$car=new Car();

$car->speedUp();    //调用不存在的方法会使用重载

echo $car->speed;   



来源:http://www.imooc.com/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值