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"