Olá, não sei se estou muito acostumado com ASP .NET MVC mais gosto bastante do recurso TempData que funciona semelhantemente a Session porém seu valor dura até a próxima requisição HTTP, útil principalmente para exibir mensagens temporárias.

Vamos a intenção do post que é simular essa funcionalidade no PHP, podemos fazer através de duas formas, com classes ou funções, ambas utilizando a $_SESSION para perdurar os dados:

Com classes

class TempData {
    public static function get($name) {
        $value = $_SESSION[$name];
        unset($_SESSION[$name]);
        return $value;
    }
    public static function set($name, $value) {
        $_SESSION[$name] = $value;
    }
}

Modo de utilização:

TempData::set("mensagem", "Salvo com sucesso");
TempData::get("mensagem");

Com função e umas validações a mais

function tempData($key, $value = '') {
    $tempData = 'tempData';
    if (empty($value)) {
        if (!isset($_SESSION[$tempData])
            || !array_key_exists($tempData, $_SESSION)
            || !array_key_exists($key, $_SESSION[$tempData])
            || count($_SESSION[$tempData]) == 0) {
            return null;
        }
        $value = $_SESSION[$tempData][$key];
        unset($_SESSION[$tempData][$key]);
        return $value;
    }
    $_SESSION[$tempData][$key] = $value;
 }

Modo de utilização:

tempData('mensagem', 'Salvo com sucesso!');
tempData('mensagem');

Até mais pessoal.

Sobre Erick

Erick de Oliveira escreveu 19 artigos no blog.

Tagged with →  
Share →

One Response to TempData no PHP

  1. Diego Silva says:

    Ótimo artigo Erick
    Estou cursando web developer pela adv informática, http://www.cursoadv.com.br.
    Tenho utilizados muitas das dicas do blog para complementar o conhecimento adquirido durantes as aulas.

Leave a Reply to Diego Silva Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>