在 PHP 中,__set()
是一個魔術方法,用于在對象上設置屬性值。但是,它不能直接訪問私有(private)屬性,因為這些屬性只能在類的內部訪問。要在類外部通過 __set()
方法操作私有屬性,您需要在類中定義一個公共(public)的 getter 和 setter 方法。
以下是一個示例:
class MyClass {
private $myPrivateProperty;
public function __get($name) {
if ($name === 'myPrivateProperty') {
return $this->myPrivateProperty;
}
return null;
}
public function __set($name, $value) {
if ($name === 'myPrivateProperty') {
$this->myPrivateProperty = $value;
} else {
// 對于其他屬性,您可以在這里執行其他操作
echo "Unknown property: " . $name;
}
}
}
$obj = new MyClass();
$obj->myPrivateProperty = "Hello, World!";
echo $obj->myPrivateProperty; // 輸出 "Hello, World!"
在這個例子中,我們定義了一個名為 MyClass
的類,其中包含一個私有屬性 $myPrivateProperty
。我們還定義了 __get()
和 __set()
方法,以便在類外部訪問和修改這個私有屬性。當我們嘗試訪問或修改 $obj
的 myPrivateProperty
屬性時,__get()
和 __set()
方法會被調用。