1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP类和对象之重载

作者:用户 来源:互联网 时间:2017-11-30 16:29:58

php对象重载

PHP类和对象之重载 - 摘要: 本文讲的是PHP类和对象之重载, PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。属性的重载通过 __set __get __isset __unset 来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。 class Car {

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

  • __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;

方法的重载

注:因为php为弱类型语言,所以,方法的重载只能成为伪重载(重载定义:重载你可以理解为是强类型的语言根据传递参数的不同而选择不同的处理方法(但是方法名不一样)。并不是每种面向对象的语言都支持狭义上的重载(方法名相同,参数类型或个数不同)。)
方法的重载通过__call来实现
当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
- eg

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

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 对象 重载 ,以便于您获取更多的相关知识。