Serializando
objetos
-
objetos
em
sessões
Nota
:
No
PHP
3
,
objetos
perdem
suas
associações
entre
classes
através
do
processo
de
serialização
e
desserialização
.
A
variável
resultante
é
do
tipo
objeto
,
mas
sem
classe
nem
métodos
,
algo
bem
sem
utilidade
(
de
fato
,
ele
se
torna
apenas
um
array
com
uma
sintaxe
engraçada
)
.
Cuidado
|
As
informações
seguintes
se
aplicam
somente
ao
PHP
4
.
|
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
.
Usando
serialize
para
salvar
um
objeto
irá
preservar
todas
as
variáveis
de
um
objeto
.
As
funções
de
um
objeto
não
serão
salvas
,
apenas
o
nome
da
classe
.
Para
ser
possível
fazer
o
unserialize(
)
de
um
objeto
,
a
classe
do
objeto
precisa
estar
definida
.
Ou
seja
,
se
você
tem
um
objeto
$a
da
classe
A
em
page1.php
e
a
serializa
,
você
consegue
uma
string
que
se
refere
a
classe
A
e
contém
todos
os
valores
de
variáveis
contidos
em
$a
.
Se
você
precisa
desserializa-la
em
page2.php
,
recriando
$a
da
classe
A
,
a
definição
da
classe
A
precisa
estar
presente
na
page2.php
.
Isto
pode
por
ser
feito
,
por
exemplo
,
armazenando
a
definição
da
classe
A
em
um
arquivo
separado
,
incluindo
este
arquivo
e
ambos
os
arquivos
page1.php
e
page2.php
.
Se
você
está
utilizando
sessões
e
usar
session_register(
)
para
registrar
objetos
,
esses
objetos
serão
serializados
automaticamente
no
final
de
cada
script
PHP
,
e
automaticamente
desserializados
em
cada
uma
das
páginas
seguintes
.
Isto
significa
que
esse
objetos
podem
estar
em
qualquer
uma
de
suas
páginas
desde
que
elas
sejam
parte
de
sua
sessão
.
É
extremamente
recomendável
que
você
inclua
as
definições
de
classe
de
todos
os
objetos
registrados
de
todas
as
suas
páginas
,
mesmo
que
você
não
use
essas
classes
em
todas
as
suas
páginas
.
Se
você
não
o
fizer
e
um
objeto
for
desserializado
sem
sua
definição
de
classe
presente
,
ele
perde
usa
associação
com
a
classe
e
se
torna
um
objeto
da
classe
stdClass
,
sem
qualquer
funções
disponíveis
.
o
que
as
deixa
silenciosamente
sem
funcionalidade
.
Assim
,
se
no
exemplo
acima
$a
se
tornar
parte
de
uma
sessão
pela
utilização
de
session_register(
"a"
)
,
você
precisa
incluir
o
arquivo
classe_a.inc.php
em
todos
as
suas
páginas
,
não
somente
em
page1.php
e
page2.php
.