时光绘梦集
位置:首页PHP正文

道法自然 2025/03/04 周2

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


上一篇:base64转码解码
下一篇:网页计算器