c # эквивалент TempData в php

Я знаю, что я могу явно установить и отключить сеанс вручную, но я считаю, что это стоит спросить. В 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 имеет такую ​​функцию, как эта?

Related of "c # эквивалент TempData в 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, но не слишком сложно реализовать его самостоятельно. Фактическая реализация зависит от ваших конкретных потребностей.

  • Вам нужны эти данные для пользователей или разделены для каждого пользователя?
  • Вы хотите, чтобы у него было время истечения по умолчанию?
  • Вы хотите это только в активном запросе или должны ли они сохраняться до тех пор, пока кто-нибудь не получит его?
  • Являются ли «промахи» приемлемыми (см. Memcached) или вы хотите быть уверены, что находите данные, когда вы его запрашиваете?

Как сообщает @AVD, такой команды нет. И я не могу понять, почему. Вещь с TempData заключается в том, что она позволяет вам сохранять некоторые значения / объекты для обратного перехода к серверу.

Если вы используете сеансы на своем веб-сайте, нет проблем, чтобы не использовать Session для хранения этих значений. Хранилище сеансов размещается на сервере, а пользователи идентифицируются сеансом, который отправляется на сервер каждый раз.

Единственное снижение производительности, которое я вижу, – это то, что вы должны запускать хранилище сеансов вне вашего процесса, использующего обработчик http. В противном случае они оба в памяти и должны быть довольно быстрыми.