Я знаю, что я могу явно установить и отключить сеанс вручную, но я считаю, что это стоит спросить. В 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 имеет такую функцию, как эта?
Как указывали другие, для сеансов 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; } }
с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 со статическим классом.
У вас этого нет в PHP, но не слишком сложно реализовать его самостоятельно. Фактическая реализация зависит от ваших конкретных потребностей.
Как сообщает @AVD, такой команды нет. И я не могу понять, почему. Вещь с TempData заключается в том, что она позволяет вам сохранять некоторые значения / объекты для обратного перехода к серверу.
Если вы используете сеансы на своем веб-сайте, нет проблем, чтобы не использовать Session для хранения этих значений. Хранилище сеансов размещается на сервере, а пользователи идентифицируются сеансом, который отправляется на сервер каждый раз.
Единственное снижение производительности, которое я вижу, – это то, что вы должны запускать хранилище сеансов вне вашего процесса, использующего обработчик http. В противном случае они оба в памяти и должны быть довольно быстрыми.