標籤:val key 實現 public style stat span return pre
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;
PHP類和對象之重載