35. I metodi magici __sleep() __wakeup e __set_state()
I primi due metodi magici che illustrerò in questo capitolo sono __sleep() e __wakeup(), che hanno in comune la Serializzazione degli Oggetti descritta in questa guida prima della serie sui metodi magici.
|
PHP richiamerà il metodo __sleep() subito prima di una serializzazione di una istanza della nostra classe. Altra differenza importante fra i due metodi è che __sleep() deve ritornare un'array contenente la lista degli attributi da serializzare, e questo ci consente di avere un controllo maggiore sulle serializzazioni della nostra classe. Se omettete il valore di ritorno di __sleep() la serializzazione fallirà restituendo un valore NULL. |
Vediamo un esempio teorico :
<?php
class Oggetto
{
public $attributo = "stringa";
public function __sleep()
{
echo "L'oggetto sta per essere serializzato!<br>";
return array("attributo");
}
public function __wakeup()
{
echo "L'oggetto è appena stato deserializzato!<br>";
}
}
$obj = new Oggetto();
$s = serialize($obj);
echo "Oggetto serializzato = $s<br>";
$u = unserialize($s);
echo $u->attributo;
?>|
Il codice produce il seguente risultato : |
Overload di __set_state()
__set_state() è un metodo statico che viene richiamato per l'esportazione delle classi tramite var_export().
L'unico parametro di questo metodo è un array contenente le proprietà esportate nella forma array ("proprietà" => valore, ...)
Il metodo è disponibile da PHP 5.1.0
E con questo capitolo abbiamo definitivamente concluso la serie sui metodi magici.
- Linguaggi:
- Tags:
