php中的重载

原创 2018-11-29 10:51:39 255
摘要:PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。1.属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。class Car {     private $ary = array();   &n

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

1.属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。

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重载。


class Car {
    public $speed = 0;
    
    public function __call($name, $args) {
        if ($name == 'speedUp') {
            $this->speed += 10;
        }
    }
}
$car = new Car();
$car->speedUp(); //调用不存在的方法会使用重载
echo $car->speed;


批改老师:天蓬老师批改时间:2018-11-29 12:17:04
老师总结:不知你是否注意到, 这些重载方法,都是在外部对类成员的一些非法操作时自动调用,不仅可以过滤外部请求,还能限制暴露过多类细节

发布手记

热门词条