PHP中的魔术方法__get()和__set()的作用
2024-11-26 16:27:23
在PHP中,__get()和__set()是魔术方法,它们用于实现类的属性重载。这些方法允许你在类中定义如何获取(__get())和设置(__set())那些在类定义中未明确声明的属性。
__get($name)方法会在尝试读取一个不可访问或未声明的属性时被调用。__set($name,$value)方法会在尝试给一个不可访问或未声明的属性赋值时被调用。
这里有一个简单的示例:
class Person {
private $attributes = array();
public function __get($name) {
if (array_key_exists($name,$this->attributes)) {
return $this->attributes[$name];
}
return null;
}
public function __set($name,$value) {
$this->attributes[$name] = $value;
}
}
$person = new Person();$person->name = "John Doe"; // 调用__set()
echo $person->name; // 调用__get(), 输出 "John Doe"