__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()
方法只會在屬性不存在時觸發。