Nota:
In PHP 3, gli oggetti perdono la loro associazione di classe
durante il processo di serializzazione e di deserializzazione.
La variabile risultante è di tipo oggetto, ma non ha classe e
metodi, e diventa inutile (come un buffo array).
| Attenzione |
Le seguenti informazioni sono valide soltanto per PHP 4.
|
serialize() restituisce una stringa che
contiene una rappresentazione byte-stream di tutti i valori
che possono essere memorizzati in PHP. unserialize()
può usare questa stringa per ricreare i valori variabili utilizzabili.
Usando serialize() per salvare un oggetto si salveranno
tutte le variabili dell'oggetto. Le funzioni dell'oggetto non sono
salvate, viene salvato solo il nome della classe.
Per potere usare unserialize() su un oggetto,
la classe dell'oggetto deve essere definita. Cioè se avete un
oggetto $a della classe A su una pagina di nome page1.php e
usate serialize(), otterrete una stringa che
si riferisce alla classe A e contiene tutti i valori delle variabili
contenute in $a. Se desiderate potere deserializzare l'oggetto in
un'altra pagina chiamata page2.php, dovete ricreare $a dalla classe A,
la definizione della classe A perciò deve essere presente nella pagina
page2.php. Questo può essere fatto per esempio memorizzando la definizione
della classe A in un file che viene incluso sia in page1.php che in page2.php.
Se state usando le sessioni ed usate session_register()
per registrare oggetti, questi oggetti vengono serializzati
automaticamente alla fine di ogni pagina PHP e sono deserializzate
automaticamente su ogni pagina della sessione. Ciò significa che
gli oggetti possono mostrarsi in ogni pagina e che sono parte
integrante della sessione.
Si suggerisce vivamente di includere le definizioni delle
classi degli oggetti registrati su tutte le pagine, anche
se le classi non sono usate su tutte le pagine. Se un
oggetto viene deserializzato senza la relativa definizione
della classe, perderà l'associazione ad essa e si transformerà
in in un oggetto della classe stdClass senza
nessuna funzione disponibile, diventando inutile.
Così se nell'esempio qui sopra $a diventasse parte di una
sessione e fosse registrato con session_register("a"),
dovreste includere un file classa.inc su tutte le pagine
in cui è valida la sessione, non soltanto nella page1.php e nella page2.php.