__set()
是 PHP 中的一個魔術方法,它允許您在嘗試為類的非靜態屬性賦值時自動調用。要有效使用 __set()
方法,請遵循以下步驟:
__set()
方法。這個方法接受兩個參數:屬性名稱(變量名)和要設置的值。class MyClass {
private $properties = array();
public function __set($name, $value) {
$this->properties[$name] = $value;
}
}
__set()
方法為類的屬性賦值。當您嘗試為未定義的屬性賦值時,將自動調用 __set()
方法。$obj = new MyClass();
$obj->property1 = "Hello"; // 調用 __set() 方法,將 "Hello" 賦值給 $obj->property1
$obj->property2 = 42; // 調用 __set() 方法,將 42 賦值給 $obj->property2
__set()
方法中添加邏輯。class MyClass {
private $properties = array();
public function __set($name, $value) {
if ($name == 'property1' && !is_string($value)) {
throw new InvalidArgumentException('property1 must be a string');
}
$this->properties[$name] = $value;
}
}
在這個例子中,我們檢查 property1
是否為字符串,如果不是,則拋出一個異常。
注意:__set()
方法不會觸發 __get()
魔術方法。如果您需要在獲取屬性值時執行操作,請使用 __get()
方法。