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);