__set() 是 PHP 中的一個魔術方法,用于在對象實例化后動態設置對象的屬性值。在構造函數中使用 __set() 可以實現在創建對象時自動設置屬性值。以下是一個示例:
class MyClass {
public $property1;
public $property2;
public function __construct($property1, $property2) {
$this->property1 = $property1;
$this->__set('property2', $property2);
}
public function __get($name) {
if (property_exists($this, $name)) {
return $this->$name;
} else {
throw new Exception("Property '{$name}' does not exist.");
}
}
}
$obj = new MyClass('value1', 'value2');
echo $obj->property1; // 輸出 "value1"
echo $obj->property2; // 輸出 "value2"
在這個示例中,我們定義了一個名為 MyClass 的類,它具有兩個公共屬性 property1 和 property2。我們在構造函數中接受兩個參數,并將它們分別賦值給 property1 和通過 __set() 方法設置的 property2。
注意,我們還需要定義一個 __get() 方法,以便在訪問不存在的屬性時拋出異常。這是因為 __set() 方法只會在屬性不存在時觸發。