0

Gravando e Recuperando Variaveis em Arquivos Externos

criado por João K. em 09/01/2003 7:41pm
Como gravar uma variável num arquivo texto para ser utilizada depois ?

Existe várias maneiras de fazer isso, mas no PHP isso é muito simples. Utilizando as funções serialize() e unserialize() o trabalho de gravar uma variável num arquivo ficou realmente fácil.

Veja o exemplo das duas funções abaixo, uma para gravar e a outra para ler do arquivo texto, criadas para manipular uma variável num arquivo texto.

Nesse exemplo abaixo estamos gravando uma array (vetor) num arquivo e depois lendo essa array direto do arquivo novamente utilizando as funções serialize() e unserialize() respectivamente:

<?php
function ler_arquivo($file_name)
{
    $fd = @fopen($file_name, 'r');
    $file_content = fread($fd, filesize($file_name));
    fclose($fd);
    $var = unserialize($file_content);
    return $var;
}

function gravar_arquivo($file_name, $var)
{
    $content = serialize($var);
    $fd = @fopen($file_name, 'w+');
    fwrite($fd, $content);
    fclose($fd);
    chmod($file_name, 0644);
    return true;
}

$file_name = 'teste.txt';

$the_array = array(
    'nome' => 'José da Silva',
    'end' => 'Rua Sem Nome, 3105',
    'tel' => '5555 5555',
    'cidade' => 'São Paulo'
);

gravar_arquivo($file_name, $the_array);

$resultado = ler_arquivo($file_name);

echo $resultado['nome'] . "<br />";
echo $resultado['end'] . "<br />";
echo $resultado['tel'] . "<br />";
echo $resultado['cidade'] . "<br />";
?>

Realmente muito simples, não acha? Esse mesmo tipo de script pode ser expandido para ler e gravar qualquer tipo de variáveis usadas no PHP, como objetos ou strings. A própria implementação de Sessions no PHP utiliza esse tipo de algoritmo.

Comentários:

Mostrando 1 - 8 de 8 comentários
Adilson Rumao disse:
Galera seguindo este post, tentei adaptar ele a um projeto que estou desenvolvendo mas não consegui finalizar. Se alguém puder ajudar agradeço.

Até está salvando e gravando no arquivo, mas aparece assim:
[code]a:5:{i:0;s:10:"CONSUMIDOR";i:1;s:13:"Astra 2.0 16V";i:2;s:4:"2010";i:3;s:7:"aaa1245";i:4;s:0:"";}[/code]

Quando dou um print_r nas SESSIONs que venho passando entre as páginas aparece assim:
Obs: dei uma separada para melhor compreenção.
[code]
Array ( [usuario] =>
Array ( [id] => 2 [nome] => TESTE [login] => TESTE [senha] => TESTE

[nomeCliente] => CONSUMIDOR

[cliente] => TESTANDO [loja] => TESTE )


[veiculo] => Array ( [carroMontadora] => GM - General Motors [carroModelo] => Astra 2.0 16V [carroAno] => 2010 [carroPlaca] => aaa1245 )


[produtos_17] => 1
[produtos_18] => 1

Obs: produtos_ = nome session, 1 é a quantidade de cada produto que foi incluído no carrinho.
)
[/code]
30/07/2013 11:05am (~10 anos atrás)

Analizando os codigos do uebimiau, verifiquei que ele trabalhava dessa forma, pois na epoca q ele começou a ser desenvolvido (PHP3) ainda naum existiam as sessions :)
24/01/2003 11:43am (~21 anos atrás)

Roin CDM disse:
Realmente mto interessante este exemplo.
14/01/2003 12:21pm (~21 anos atrás)

serialize() retorna uma string contendo uma representação linear de qualquer valor que pode ser armazenado no PHP.

unserialize() pode ser utilizado para recriar os valores da variável original.

Você pode fazer isso com qualquer tipo de variavel.Com objetos você tem que tomar cuidado ,de colocar a classe que ele pertence junto,senão é ineficaz.
12/01/2003 12:40am (~21 anos atrás)

Loco disse:
O que a funcao serialize() e a unserialize() fazem exatamente??
11/01/2003 8:31pm (~21 anos atrás)

Realmente, é muito simples mas também, é bastante prático...

* Nem sabia que existia essas funções[ serialize() e unserialize() ].
hehehehehehehe
09/01/2003 10:04pm (~21 anos atrás)

Na realidade ,com seus artigo você pode fazer outras ,prinpalmente com session .
Dá uma olhada aqui : http://www.php.net/manual/pt_BR/language.oop.serialization.php
09/01/2003 9:24pm (~21 anos atrás)

Legal
:)
09/01/2003 9:19pm (~21 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)