__set()
是 PHP 中的一个魔术方法,用于在对象上设置属性值。当尝试访问一个对象的属性,但该属性不存在时,这个方法会被调用。以下是一些使用 __set()
的示例:
class MyClass { private $properties = array(); public function __set($name, $value) { $this->properties[$name] = $value; } public function __get($name) { if (array_key_exists($name, $this->properties)) { return $this->properties[$name]; } else { throw new Exception("Property '{$name}' does not exist."); } } } $obj = new MyClass(); $obj->property1 = "Value 1"; $obj->property2 = "Value 2"; echo $obj->property1 . "\n"; // 输出: Value 1 echo $obj->property2 . "\n"; // 输出: Value 2 // 尝试访问不存在的属性将抛出异常 try { echo $obj->property3; } catch (Exception $e) { echo $e->getMessage() . "\n"; // 输出: Property 'property3' does not exist. }
在这个例子中,我们创建了一个名为 MyClass
的类,它使用 __set()
方法来存储对象的属性。当我们尝试设置或获取一个属性时,这个方法会被调用。如果尝试访问一个不存在的属性,将抛出一个异常。