在 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() 方法会被调用。