在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;
Categories: PHP