O que é serialização de dados?

em primeiro lugar, não consegui obter uma definição clara da Wikipédia ou mesmo da função serializar no manual do PHP. Preciso de saber alguns casos que precisamos do termo serialização e como as coisas estão a correr sem ele? Em outra palavra, onde você precisa de serialização e sem ela o seu código estará faltando alguma característica importante.

Author: Jean-Rémy Revy, 2012-08-05

5 answers

O que é a serialização?

A serialização são objectos que se codificam noutra língua. Por exemplo, você tem um array em PHP como este:

$array = array("a" => 1, "b" => 2, "c" => array("a" => 1, "b" => 2));

E então você quer armazená-lo em arquivo ou enviar para outra aplicação.

Há várias escolhas de línguas, mas a ideia é a mesma.: Esse array tem que ser codificado (ou traduzido) em texto ou bytes, que podem ser escritos em arquivo ou enviados através de rede. Por exemplo, se você
$data = serialize($array);
Vais ter isto:
a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";a:2:{s:1:"a";i:1;s:1:"b";i:2;}}

Este é o formato de serialização particular do PHP que o PHP compreende e funciona vice-versa para que você seja capaz de usá-lo para deserializar objetos. Por exemplo, você armazenou um array em um arquivo e o quer de volta em seu código:

$array = unserialize($data);

Mas você pode escolher outro formato de serialização, por exemplo, JSON.

$json = json_encode($array);

Dar-te-ei isto:

{"a":1,"b":2,"c":{"a":1,"b":2}}
Resultado que não só é facilmente salvo, lido pelo olho humano ou enviado através da rede, mas é compreensível para quase todas as outras linguagens (Javascript, Java, C#, C++.....)

Conclusão Serialização é a tradução de objetos para outra língua, no caso de você querer armazenar ou compartilhar dados.

Há alguma situação, em que você não pode fazer nada, mas serializá-lo?

Não. Mas a serialização normalmente torna as coisas mais fáceis.

O formato JSON e PHP são os únicos formatos possíveis? Não, Não, Não e mais uma vez não. Há muitos formato.

  • XML que tem sucessores como o SOAP, o WSDL, etc (os que têm um propósito específico)
  • Bytes
  • ...
  • ...
  • ...
  • seus próprios formatos (você pode criar seu próprio formato para serialização e usá-lo, mas isso é uma grande coisa a fazer e não vale a pena, na maioria das vezes)
Espero ter ajudado!
 63
Author: Dovydas Navickas, 2014-09-29 21:26:34

Serialização é o processo de conversão de algum objeto na memória para outro formato que pode ser usado tanto para armazenar em um arquivo ou enviado através da rede. Deserialização é o processo inverso que significa que a instância do objeto real é restaurada a partir da representação serializada dada do objeto. Isto é muito útil quando se comunica entre vários sistemas.

O formato de serialização pode ser interoperável ou não interoperáveis. Operavel formatos (tais como JSON, XML,...) permitir a serialização de algum objeto usando uma dada plataforma e desertificá-lo usando uma plataforma diferente. Por exemplo, com JSON você poderia usar javascript para serializar o objeto e enviá-lo através da rede para um script PHP que irá deserializar o objeto e usá-lo.

A serialize() a função PHP utiliza um formato não interoperável. Isto significa que somente PHP poderia ser usado para serializar e deserializar o objeto de volta.

Podes usar o json_encode e json_decode() funções a fim de serializar/deserializar objetos PHP usando o formato interoperável JSON.

 13
Author: Darin Dimitrov, 2016-12-23 15:43:32

Serialização é o processo de transformar dados (por exemplo, variáveis) em uma representação, como uma cadeia de caracteres, que pode ser facilmente escrita e lida de volta de, por exemplo, um arquivo ou banco de dados.

Casos de Uso? Existem muitos, mas geralmente gira em torno da idéia de pegar um complexo, uma matriz aninhada ou um objeto e transformá-lo em uma cadeia simples que pode ser salva e lida mais tarde para recuperar a mesma estrutura. Por exemplo, desde que tenha em php:

$blub = array();
$blub['a'] = 1;
$blub['a']['b'] = 4;
$blub['b'] = 27;
$blub['b']['b'] = 46;
Em vez de ir através de cada membro do array individualmente e escrevendo-o pode-se apenas:
$dataString = serialize($blub);

E o array serializado está pronto para ser escrito em qualquer lugar como um texto simples, de tal forma que recuperar este texto de novo e fazer o unserialize() sobre ele lhe dá exatamente a mesma estrutura de array que você tinha antes. Sim, é muito simples.

 4
Author: Mahn, 2012-08-05 16:24:38
Preciso de saber alguns casos. precisamos do termo serialização e como as coisas estão a correr sem ele.

A serialização pode tornar-se útil se você precisar de armazenar estruturas completas (como uma factura com todos os dados associados, como endereço do cliente, endereço do remetente, posições do produto, caclulcações fiscais, etc) que só são válidas em um determinado ponto no tempo.

Todos estes dados irão mudar no futuro, poderão surgir novas regulamentações fiscais, o endereço de um cliente irá mudar, os produtos saem da vida. Mas a fatura ainda precisa ser válida e armazenada. Isto é possível com serialização. Como uma fotografia. O objeto na memória é serializado em uma forma binária (muitas vezes como em PHP) que pode ser apenas armazenada. Ele pode ser trazido de volta para viver mais tarde (e em um contexto diferente). Como com este exemplo de fatura: em dez anos, os dados ainda podem ser lidos e o objeto de fatura é o mesmo que era dez anos antes.
Em outras palavras, onde você deve precisa de serialização e sem ele o seu código estará faltando alguma característica importante.
Este foi um exemplo. Não é que você sempre precise disso, mas se as coisas se tornarem mais complexas, a serialização pode ser útil.
 3
Author: hakre, 2012-08-05 16:35:21

Uma vez que o marcaste com {[[1]}, um tipo de serialização pode ser a formalização.

Aqui estão as referências para o protótipo jQuerye .Equivalentes JS.

O que eles basicamente fazem é serializar os valores de entrada de formulários em pares de valor-nome separados por vírgulas .

Assim considerando uma utilização real..

$.ajax({
   url : 'insert.php?a=10,b=15' //values serialized via .serialize()
   type: 'GET'
});

E você provavelmente faria {[[2] } para recuperar esses valores, Eu não estou familiarizado com o PHP embora.

 1
Author: Robin Maben, 2012-08-05 16:21:03