在PHP中,__set 跟 __get 是 magic methods,用在存取物件中私有的成員
舉例來說,當物件中有 private 或 protected 的成員時,是無法直接存取的
class Item { protected $name; private $price; } $item = new Item(); $item->name = "Johnson"; echo $item->name;
以上程式會顯示
Cannot access protected property Item::$name
利用 __set 與 __get methods,當直接存取物件成員時,便會執行__set 或 __get methods,以達到由物件內部方法取得成員的動作
class Item { protected $name; private $price; function __set($name, $value) { $this->$name = $value; } function __get($name) { return $this->$name; } } $item = new Item(); $item->name = "Johnson"; echo $item->name;