PHP - 在类变量中转换数组

时间:2018-04-09 22:33:00

标签: php

如何将数组(assoc或seq)转换为类变量:

我有这个数组

[
    "uuidtype"=>4,
    "data"=>[
        "name"=>"Arthur",
        "age"=>"unknown"
    ]
]

我有这堂课:

class Example{
    public static function ___g($var_name, $val){
        // static $$varname = $val; Doesn't work
        // self::${(string)$varname} = $val; Doesn't work
    }
}

我想要这个:

class Example{
    public static $uuidtype = 4;
    public static $data;

    ...
}

2 个答案:

答案 0 :(得分:0)

您可以创建一个数组,然后将其转换为对象,所以:

$arr = [
    "uuidtype"=>4,
    "data"=>[
        "name"=>"Arthur",
        "age"=>"unknown"
    ]
]

$as_class = (object) $arr;

echo $as_class->uuidtype; //Works ;)

我不确定表现,但对我有用。

答案 1 :(得分:0)

您也可以使用Php __get魔术方法。它允许动态创建对象属性。见http://php.net/manual/en/language.oop5.overloading.php#object.get。在How do I dynamically write a PHP object property name?

上提出了类似的问题