在 PHP 中,__set()
是一个魔术方法,用于在对象上设置属性值。但是,它不能直接访问私有(private)属性,因为这些属性只能在类的内部访问。要在类外部通过 __set()
方法操作私有属性,您需要在类中定义一个公共(public)的 getter 和 setter 方法。
以下是一个示例:
class MyClass {
private $myPrivateProperty;
public function __get($name) {
if ($name === 'myPrivateProperty') {
return $this->myPrivateProperty;
}
return null;
}
public function __set($name, $value) {
if ($name === 'myPrivateProperty') {
$this->myPrivateProperty = $value;
} else {
// 对于其他属性,您可以在这里执行其他操作
echo "Unknown property: " . $name;
}
}
}
$obj = new MyClass();
$obj->myPrivateProperty = "Hello, World!";
echo $obj->myPrivateProperty; // 输出 "Hello, World!"
在这个例子中,我们定义了一个名为 MyClass
的类,其中包含一个私有属性 $myPrivateProperty
。我们还定义了 __get()
和 __set()
方法,以便在类外部访问和修改这个私有属性。当我们尝试访问或修改 $obj
的 myPrivateProperty
属性时,__get()
和 __set()
方法会被调用。