【发布时间】:2014-08-29 09:53:54
【问题描述】:
我遇到了一个很容易解决的小问题,但让我想到了从函数返回 $_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 数组而不是其填充值,以便我可以取消设置返回值(如第一个示例中所示)。
【问题讨论】:
-
无论如何你都不能使用第一个语法
unset($whatever)。 PHP就是这样。您可以通过利用魔术函数来设置其他可能的句法模式,但unset($whatever)不能永远导致在其他地方修改内容。 -
您可以通过编写适当的类来实现。像
$foo = $session->get('foo'); $foo->remove();这样的东西是可能的,尽管可以说这很快就会让人困惑(例如,你删除了 foo,但仍然有它的对象)。简而言之,这并不是您真正应该开始使用的模式。 -
@Jon,这是我问题的核心。由于这个问题似乎没有“好的”答案,您能否将您的“评论”更改为“答案”,我会接受吗?
-
@Eric:我添加了一个答案。