如何返回$ _SESSION而不是$ _SESSION的值?

时间:2014-07-08 15:18:45

标签: php function session

我遇到了一个容易修复的小问题,但让我想到了从函数返回$ _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数组的方法而不是其填充值,以便我可以取消设置返回的值(如第一个示例中所示)。

2 个答案:

答案 0 :(得分:1)

您无法执行任何操作来启用直接unset($var)语法。这是因为PHP中没有钩子可以让你自定义unset的行为 - 这就是魔术方法__unset,但只有在对象属性上调用时才会发挥作用。

答案 1 :(得分:0)

$_SESSION是一个“超全球”。来自documentation

  

这是一个“超全球”或自动全局变量。这仅仅意味着它在整个脚本的所有范围内都可用。没有必要做全局$变量;在函数或方法中访问它。

没有必要退货,因为它无论如何都可以以正确的形式提供。