PHP中的魔术方法__get()和__set()的作用

在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"


有帮助(- 没帮助(-