php动态属性赋值
在php中魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖 PHP 的默认操作。
在给不可访问(protected 或 private)或不存在的属性赋值时,__set() 会被调用。
读取不可访问(protected 或 private)或不存在的属性的值时,__get() 会被调用。
当对不可访问(protected 或 private)或不存在的属性调用 isset() 或 empty() 时,__isset() 会被调用。
当对不可访问(protected 或 private)或不存在的属性调用 unset() 时,__unset() 会被调用。
以下是php中使用魔术方法动态给对象的属性赋值。
<?php class Myclass { private $data = []; public function __get($name) { if (array_key_exists($name, $this->data)) { return $this->data[$name]; } return null; } public function __set($name, $value) { $this->data[$name] = $value; } public function __isset($name) { return isset($this->data[$name]); } public function __unset($name) { unset($this->data[$name]); } public function hmget() { return $this ->data; } public function hmset($arr) { $this ->data = $arr; } } $obj = new Myclass(); //设置 $obj->name = "tosry"; $obj->age = 30; //获取 echo $obj->name; echo $obj->age; //检查是否存在 if (isset($obj->name)) { echo "Name is set. "; } 删除 unset($obj->age);