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

Do you know how to return a reference to a $_SESSION variable from the eval() function.

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

Error checking aside, here is the result I want:

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

If you're wondering whether or not I need to use eval(), the answer is yes.

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

You just need to loop over the path you want to get from the array and keep updating a reference to it. Then return that reference.

DEMO: http://codepad.org/mUS26ZAG