PHP中的重載指的是動(dòng)態(tài)的創(chuàng)建屬性與方法,是通過魔術(shù)方法來實(shí)現(xiàn)的。屬性的重載通過__set,__get,__isset,__unset來分別實(shí)現(xiàn)對不存在屬性的賦值、讀取、判斷屬性是否設(shè)置、銷毀屬性。
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屬性動(dòng)態(tài)創(chuàng)建并賦值
echo $car->name;
方法的重載通過__call來實(shí)現(xiàn),當(dāng)調(diào)用不存在的方法的時(shí)候,將會(huì)轉(zhuǎn)為參數(shù)調(diào)用__call方法,當(dāng)調(diào)用不存在的靜態(tài)方法時(shí)會(huì)使用__callStatic重載。
class Car {
public $speed = 0;
public function __call($name, $args) {
if ($name == 'speedUp') {
$this->speed += 10;
}
}
}
$car = new Car();
$car->speedUp(); //調(diào)用不存在的方法會(huì)使用重載
echo $car->speed;
理解PHP的重載方法,使用__call實(shí)現(xiàn)方法的重載,創(chuàng)建speedDown的方法使速度減少10。
在提示處添加以下方法
public function __call($name, $args) {
if ($name == 'speedDown') {
$this->speed -= 10;
}
}
請驗(yàn)證,完成請求
由于請求次數(shù)過多,請先驗(yàn)證,完成再次請求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)