九月十九

2018-09-19  本文已影响0人  网站蒋立卫

PHP类和对象之对象继承

继承是面向对象程序设计中常用的一个特性,汽车是一个比较大的类,我们也可以称之为基类,除此之外,汽车还分为卡车、轿车、东风、宝马等,因为这些子类具有很多相同的属性和方法,可以采用继承汽车类来共享这些属性与方法,实现代码的复用。

9、PHP类和对象之重载

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;

方法的重载通过__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;

上一篇 下一篇

猜你喜欢

热点阅读