我遇到了一个容易修复的小问题,但让我想到了从函数返回$ _SESSION的想法,而不是返回$ _SESSION的值。作为一个例子,让我们说我想编写一个函数来取消设置$ _SESSION(我知道下面的例子很愚蠢,但我希望用它来说明一点)。
function sessionFunction($name) {
return $_SESSION[$name];
}
$session_to_unset = sessionFunction('unset_me');
unset($session_to_unset);
以上不会奏效,因为我返回$ _SESSION的值而不是返回$ _SESSION本身。
当然,我可以做(再次......非常愚蠢的功能,但用来说明一点):
function sesssionFunction($name) {
return $name;
}
$session_to_unset = sessionFunction('unset_me');
unset($_SESSION[$name]);
但是,我想知道是否有实际返回$ _SESSION数组的方法而不是其填充值,以便我可以取消设置返回的值(如第一个示例中所示)。
答案 0 :(得分:1)
您无法执行任何操作来启用直接unset($var)
语法。这是因为PHP中没有钩子可以让你自定义unset
的行为 - 这就是魔术方法__unset
,但只有在对象属性上调用时才会发挥作用。
答案 1 :(得分:0)
$_SESSION
是一个“超全球”。来自documentation:
这是一个“超全球”或自动全局变量。这仅仅意味着它在整个脚本的所有范围内都可用。没有必要做全局$变量;在函数或方法中访问它。
没有必要退货,因为它无论如何都可以以正确的形式提供。