0

O que sao objetos serializados e porque usar-los?

criado por Lucas Vasconcelos em 21/02/2004 7:15am
Nenhuma descrição foi enviada.

Lista de Respostas:

0
27/02/2004 7:56pm
(~20 anos atrás)
Alfred R. Baudisch respondeu:
Serialização de objetos e arrays, passa todos os valores dos parametros dos objetos para uma string. Assumimos o código:
class config
{
var $email = "email@email.com";
var $nome = "Seu nome";
var $valor = 500;
}
$classe = new config;
$string = serialize($classe);

$string conterá o valor "O:6:"config":3:{s:5:"email";s:15:"email@email.com";s:4:"nome";s:8:"Seu nome";s:5:"valor";i:500;}".

Bom e qual a vantagem disso? Assumimos que a classe "config" recupera os dados de um usuário do banco de dados toda vez que ele entra em uma seção do seu site. Bom, esses dados nunca mudam a não ser que o usuário altere o cadastro. Então, é desnecessário toda vez fazer a mesma chamada ao banco de dados, gastando mais memória e processamento. A solução é serializar o objeto, como foi feito e então passar os dados para a sessão. Na página ficaria algo assim:

<?
// Se os dados do usuário estão na sessão, recupera da sessão, caso contrário, pega do banco de dados e manda para a sessão.
if($_SESSION["dados"])
{
$classe = unserialize($_SESSION["dados"]);
}
else
{
// Chamar config normalmente obtém dados do BD
$classe = new config;
$_SESSION["dados"] = serialize($classe);
}

0
27/02/2004 7:56pm
(~20 anos atrás)
Alfred R. Baudisch respondeu:
Serialização de objetos e arrays, passa todos os valores dos parametros dos objetos para uma string. Assumimos o código:
class config
{
var $email = "email@email.com";
var $nome = "Seu nome";
var $valor = 500;
}
$classe = new config;
$string = serialize($classe);

$string conterá o valor "O:6:"config":3:{s:5:"email";s:15:"email@email.com";s:4:"nome";s:8:"Seu nome";s:5:"valor";i:500;}".

Bom e qual a vantagem disso? Assumimos que a classe "config" recupera os dados de um usuário do banco de dados toda vez que ele entra em uma seção do seu site. Bom, esses dados nunca mudam a não ser que o usuário altere o cadastro. Então, é desnecessário toda vez fazer a mesma chamada ao banco de dados, gastando mais memória e processamento. A solução é serializar o objeto, como foi feito e então passar os dados para a sessão. Na página ficaria algo assim:

<?
// Se os dados do usuário estão na sessão, recupera da sessão, caso contrário, pega do banco de dados e manda para a sessão.
if($_SESSION["dados"])
{
$classe = unserialize($_SESSION["dados"]);
}
else
{
// Chamar config normalmente obtém dados do BD
$classe = new config;
$_SESSION["dados"] = serialize($classe);
}

0
28/02/2004 8:58am
(~20 anos atrás)
só uma notinha interessante
como nos exemplos do Alfred

todos tem o new class;

porque se eu não me engano sem instanciar a classe não tem como serializar

espero ter ajudado

0
01/03/2004 7:40am
(~20 anos atrás)
Cléver Anjos respondeu:
Serializar um obejto (ou variavel) nada mais é que transformá-la em uma string para que esta possa ser salva/restaurada com facilidade e seguranca.

Exemplo : armazenar as preferencias e um usuario para que toda vez que volte ao portal estas referencias sejam setadas de acordo com um cookie que tenha estas preferencias armazenadas

0
02/03/2004 6:12pm
(~20 anos atrás)
Diogo Gomes respondeu:
Marcelo, o problema não é exatamente a instanciação, mas sim que para instanciar é necessário existir uma classe, na serialização a classe tem que ir junto...

Nova Resposta:

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