Atenção, este é um post gratuito publicado no site da Devmedia e publicado no Slidesharena conta da própria Devmedia. Sua ...
Restaurando os Dados    Para restaurar os dados serializados usamos a função unserialize() que recebe o dado serializado, ...
12 <?php    //arquivo jogador.php3    class Jogador {4         private $nome;5         private $hp;6         private $scor...
1    <?php2    //serializaFile.php3    include_once jogador.php;4    $jogador = new Jogador("Allan");5    $jogador->setHp(...
Próximos SlideShares
Carregando em…5
×

Serialização de dados em PHP

971 visualizações

Publicada em

Veja neste artigo um conceito de serialização e como usa-la com PHP através de um exemplo simples e prático. Basicamente é o processo de salvar dados de um objeto, mas não obrigatoriamente um objeto, em algum lugar ou transmiti-lo pela rede, num formato binário eu de texto. Sendo que esses bytes poderão ser utilizados para reconstruir perfeitamente o que foi serializado.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
971
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Serialização de dados em PHP

  1. 1. Atenção, este é um post gratuito publicado no site da Devmedia e publicado no Slidesharena conta da própria Devmedia. Sua republicação não é autorizada.Para ler este e outros artigos de seu interesse, acesse http://www.devmedia.com.brSerialização de dados em PHPVeja neste artigo um conceito de serialização e como usa-la com PHP através de um exemplo simples eprático. Basicamente é o processo de salvar dados de um objeto, mas não obrigatoriamente um objeto,em algum lugar ou transmiti-lo pela rede, num formato binário eu de texto. Sendo que esses bytespoderão ser utilizados para reconstruir perfeitamente o que foi serializado.O que é Serialização de dados?Basicamente é o processo de salvar dados de um objeto, mas não obrigatoriamente um objeto, em algum lugarou transmiti-lo pela rede, num formato binário eu de texto. Sendo que esses bytes poderão ser utilizados parareconstruir perfeitamente o que foi serializado.Um exemplo muito claro disso, que muitos usam, pois é muito bom, é que quando você está jogando umjoginho e precisa fazer uma parada, mas não quer perder o estado do jogo, o que você faz? Salva (“serializa”)em algum lugar para depois carregar (“deserializa”) o jogo e tudo volta de onde parou.Serializando no PHPPrimeiro quero dizer que a Serialização não é coisa nova não e muito menos exclusivo do PHP.No PHP ela é feita de forma extremamente simples, usamos o método serialize() que recebe o que deve serserializado. Vejam:Listagem 01: Serializando1<?php2$array = array( "a","b","c","d","e" );3$serializado = serialize($array);4echo $serializado;5//resultado a:5:{i:0;s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;s:1:"d";i:4;s:1:"e";} ?>6Lembrando que não podemos serializar recursos, ou seja, arquivos, conexão como banco de dados, etc. E quetudo que você coloca numa variável de sessão é serializado automaticamente.
  2. 2. Restaurando os Dados Para restaurar os dados serializados usamos a função unserialize() que recebe o dado serializado, interpreta a string e traz de volta o que foi serializado. Vejam como ficaria para o exemplo da Listagem 01: Listagem 02: Restaurando os dados 1 <?php 2 $serialziado = a:5:{i:0;s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;s:1:"d";i:4;s:1:"e";}; 3 $array = unserialize($serialziado); 4 var_dump($array); 5 /* 6 array(5) { 7 [0]=> string(1) "a" 8 [1]=> string(1) "b" 9 [2]=> string(1) "c" [3]=> string(1) "d" 10 [4]=> string(1) "e" 11 } 12 */ 13 ?> 14 Caso a string passada não seja uma string serializada o método retornará falsee um E_NOTICE. Serialização de objetos Bem, nós já serializamos e restauramos um array e com objetos o processo é exatamente o mesmo porem pode fazer uso de dois métodos muito úteis, __sleep() e __wakeup().o __sleep(): é invocado quando um objeto é serializado, ou seja, no momento da execução de serialize(), usamos ele para informar quais dados devem ser serializados, para isso devemos retornar um array com o nome dos campos que devem ser serializados. Lembrando que ele será executado tanto quando usamos serialize() diretamente ou quando enviamos uma variável para a sessão.o __wakeup(): faz o contrario de __sleep(), ele é invocado quando estamos restaurando um objeto por meio de unserialize() ou quando chamamos uma variável de sessão. Usamos para setar valores padrões para quando restauramos os dados. Vejamos na Listagem 03 o uso desses dois métodos construindo uma classe Jogador. Listagem 03: Implementando __sleep() e __wakeup()
  3. 3. 12 <?php //arquivo jogador.php3 class Jogador {4 private $nome;5 private $hp;6 private $score;7 public function __construct($nome){8 $this->nome = $nome;9 $this->hp = 100;10 $this->score = 0;11 }12 /* gets e sets aqui */13 public function __sleep(){ return array(14 "nome","score"15 );16 }17 public function __wakeup(){18 $this->hp = 100;19 }20}21?>22Dissemos aqui ao PHP para serializar apenas o nome e o score do jogador e que quando restaurarmos o hpdeve ser igual a 100.Salvando e Lendo de arquivosUma forma de persistir os dados serializados é salvar em um arquivo para isso podemos usarfile_put_contents() que recebe o nome do arquivo e o conteúdo e então a partir de um arquivo gravadopodemos lê-lo, com file_get_contents(), e restaurar os dados. Vamos aproveitar a classe criada na Listagem 03para demonstrar a persistência e leitura em arquivo na Listagem 04.Listagem 04: Salvando e lendo dados em arquivo
  4. 4. 1 <?php2 //serializaFile.php3 include_once jogador.php;4 $jogador = new Jogador("Allan");5 $jogador->setHp(1);6 $jogador->setScore(1500);7 $serializado = serialize($jogador);8 file_put_contents("jogo.save",$serializado);9 echo ("jogo salvo!");10?> <?php11 //restauraFile.php12 include jogador.php;13 $dados = file_get_contents("jogo.save");14 $jogador = unserialize($dados);15 echo " nome ".$jogador->getNome()." score ".$jogador->getScore()." hp ".$jogador->ge16?>17O que é feito aqui é muito simples, em serializaFile.php criamos um novo jogador e setamos alguns valorespara ele e salvamos no arquivo jogo.save enquanto em restauraFile.php realizamos a leitura do arquivo erestauramos o objeto serializado.Bem pessoal fico por aqui espero que tenham gostado, cometem, compartilhem e até a próxima.Leia mais em: Serialização de dados em PHP http://www.devmedia.com.br/serializacao-de-dados-em-php/25224#ixzz25gtqLqr0

×