c#TempData等效于php

Sha*_*kan 1 php c# tempdata

我知道我可以手动显式设置和取消设置会话,但我相信这是值得问的.在c#中,有一个名为TempData的字典,它存储数据直到第一个请求.换句话说,当调用TempData时,它会自动取消设置.为了更好地理解这里是一个例子:

Controller1.cs:

TempData["data"] = "This is a stored data";
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

所以基本上,这只是一个仅供1次使用的会话.再一次,我知道我可以在php中明确设置和取消设置,但是,php是否有类似这样的功能?

ale*_*exn 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试:

TempData::set("hello", "world");
var_dump($_SESSION); // array(1) { ["hello"]=> string(5) "world" }

TempData::get("hello"); // => world
var_dump($_SESSION); // array(0) { } 
Run Code Online (Sandbox Code Playgroud)

不幸的是,我们无法使用静态类实现ArrayAccess.