__set()
是 PHP 中的一个魔术方法(magic method),用于在对象中动态设置属性值。它适用于以下对象:
- 实例化对象:当你创建一个类的实例并尝试访问或设置其不存在的属性时,
__set()
方法会被调用。
class MyClass {
public function __set($name, $value) {
echo "Setting property '$name' to '$value'\n";
}
}
$obj = new MyClass();
$obj->newProperty = "Hello, World!"; // 调用 __set() 方法
- 子类对象:当你创建一个子类并尝试访问或设置其父类中不存在的属性时,
__set()
方法会被调用。
class ParentClass {
public function __set($name, $value) {
echo "Setting property '$name' to '$value'\n";
}
}
class ChildClass extends ParentClass {
}
$obj = new ChildClass();
$obj->newProperty = "Hello, World!"; // 调用父类的 __set() 方法
需要注意的是,__set()
方法只适用于对象的属性,而不适用于静态属性。要设置静态属性,你需要使用静态方法 __set_state()
。