Sauvegarde d'objets - cas des sessions
En
PHP
3
,
les
objets
perdent
leur
association
de
classe
à
travers
le
processus
de
sauvegarde
et
relecture
.
Le
type
de
la
variable
après
relecture
est
bien
objet
mais
il
n
'
a
plus
de
méthode
ou
de
nom
de
classe
.
Cela
rend
la
focntionnalité
plutôt
inutile
(
l'objet
est
devenu
un
tableau
avec
une
syntaxe
étrange
)
.
Attention
|
La
documentation
suivante
n
'
est
valable
que
pour
PHP
4
.
|
serialize(
)
retourne
une
chaîne
représentant
une
valeur
qui
peut
être
stockée
dans
les
sessions
de
PHP
,
ou
une
base
de
données
.
unserialize(
)
peut
relire
cette
chaîne
pour
recréer
la
valeur
originale
.
serialize(
)
va
sauver
toutes
les
variables
d
'un
objet
.
Le
nom
de
la
classe
sera
sauvé
mais
par
les
méthodes
de
cet
objet
.
Pour
permettre
à
unserialize(
)
de
lire
un
objet
,
la
classe
de
cet
objet
doit
être
définie
.
C'
est-à-dire
,
si
vous
avez
un
objet
$a
de
la
classe
A
dans
une
page
php1.php
,
et
que
vous
le
linéarisez
avec
serialize(
)
,
vous
obtiendrez
une
chaîne
qui
fait
référence
à
la
classe
A
,
et
contient
toutes
les
valeurs
de
$a
.
Pour
pouvoir
le
relire
avec
la
fonction
unserialize(
)
dans
une
page
page2.php
,
il
faut
que
la
définition
de
la
classe
A
soit
présente
dans
cette
deuxième
page
.
Cela
peut
se
faire
de
manière
pratique
en
sauvant
la
définition
de
la
classe
A
dans
un
fichier
séparé
,
et
en
l
'
incluant
dans
les
deux
pages
page1.php
et
page2.php
.
Si
vous
utilisez
les
sessions
et
la
fonction
session_register(
)
pour
sauver
des
objets
,
ces
objets
seront
linéarisés
automatiquement
avec
la
fonction
serialize(
)
à
la
fin
de
chaque
script
,
et
relus
avec
unserialize(
)
au
début
du
prochain
script
.
Cela
signifie
que
ces
objets
peuvent
apparaître
dans
n
'
importe
quelle
page
qui
utilise
vos
sessions
.
Il
est
vivement
recommandé
d'
inclure
la
définition
de
classe
dans
toutes
vos
pages
,
même
si
vous
n
'utilisez
pas
ces
classes
dans
toutes
vos
pages
.
Si
vous
l'
oubliez
et
qu
'un
tel
objet
est
présent
,
il
perdra
sa
classe
,
et
deviendra
un
objet
de
classe
stdClass
sans
aucune
fonction
,
et
donc
,
plutôt
inutile
.
Si
,
dans
l'
exemple
ci-dessus
,
$a
devient
un
objet
de
session
avec
l'utilisation
de
session_register("a"
)
,
vous
devez
pensez
à
inclure
le
fichier
classa.inc
dans
toutes
vos
pages
,
et
pas
seulement
page1.php
et
page2.php
.