我知道我可以手动显式设置和取消设置会话,但我相信这是值得问的。在c#中,有一个名为TempData的字典,它存储数据直到第一个请求。换句话说,当调用TempData时,它会自动取消设置。为了更好地理解,这里有一个例子:
Controller1.cs:
TempData["data"] = "This is a stored data";
Model1.cs:
string dst1 = TempData["data"]; // This is a stored data
string dst2 = TempData["data"]; // This string will be empty, if an exception is not raised (I can't remember well if an exception is raised)
所以基本上,这只是一个仅供1次使用的会话。再一次,我知道我可以在php中明确设置和取消设置,但是,php是否有类似这样的功能?
答案 0 :(得分:5)
正如其他人所指出的,使用会话来启用TempData。这是一个简单的PHP实现:
class TempData {
public static function get($offset) {
$value = $_SESSION[$offset];
unset($_SESSION[$offset]);
return $value;
}
public static function set($offset, $value) {
$_SESSION[$offset] = $value;
}
}
测试:
TempData::set("hello", "world");
var_dump($_SESSION); // array(1) { ["hello"]=> string(5) "world" }
TempData::get("hello"); // => world
var_dump($_SESSION); // array(0) { }
不幸的是,我们无法使用静态类实现ArrayAccess。
答案 1 :(得分:2)
你没有在PHP中拥有它,但它自己实现起来应该不会太难。实际实施取决于您的确切需求。
答案 2 :(得分:1)
正如@AVD所说,没有这样的命令。我真的不明白为什么。 TempData的用途是它允许您将一些值/对象保存到服务器。
如果您在网站中使用Sessions,则不使用Session来存储这些值。会话存储位于服务器上,用户由sessionid标识,每次都会发送到服务器。
我能看到的唯一性能损失是你在运行http处理程序的进程外运行会话存储。否则他们都在记忆中并且应该非常快。