__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()
方法只会在属性不存在时触发。