从PHP中的eval()函数返回对会话变量的引用

时间:2014-05-28 18:43:15

标签: php session pass-by-reference

您知道如何从$_SESSION函数返回对eval()变量的引用。

class SessionAccessor {
    static function &getVar() {
        return eval('return $_SESSION["sample"];');
    }
}

错误检查,这是我想要的结果:

$sample =& SessionAccessor::getVar();
$sample = 'new value'; // sets $_SESSION['sample'] to 'new value'

如果您想知道我是否需要使用eval(),答案是肯定的。

1 个答案:

答案 0 :(得分:1)

class SessionAccessor {
    static function &getVar($str) {
        $arr =& $_SESSION;
        foreach(explode('/',$str) as $path){
            $arr =& $arr[$path];
        }
        return $arr;
    }
}

您只需要遍历要从数组中获取的路径并继续更新对它的引用。然后返回该引用。

DEMO:http://codepad.org/mUS26ZAG