5.10.14 Méthodes magiques
5.10 Les classes et les objets (PHP 5)
5 Référence du langage
Manuel PHP
->__sleep et __wakeup . __toString . __set_state
|
5.10.14.1 __sleep et __wakeup
La fonction
serialize
vérifie si votre classe a une fonction
avec le nom magique
__sleep
. Si c'est le cas, cette fonction
sera exécutée avant toute linéarisation. Elle peut nettoyer l'objet et elle est
supposée retourner un tableau avec les noms de toutes les variables de l'objet
qui doivent être linéarisées.
Le but avoué de
__sleep
est de clore toutes les
connexions aux bases de données que l'objet peut avoir, valider
les données en attente ou effectuer des tâches de nettoyage.
De plus, cette fonction est utile si vous avez de très gros objets
qui n'ont pas besoin d'être sauvegardés en totalité.
Réciproquement, la fonction
unserialize
vérifie
la présence d'une fonction dont le nom est le nom magique
__wakeup
. Si elle est présente, cette fonction
peut reconstruire toute ressource que l'objet possède.
Le but avoué de
__wakeup
est de rétablir
toute connexion base de données qui aurait été perdue
durant la linéarisation et d'effectuer des tâches de réinitialisation.
| Utilisation de Sleep et de wakeup |
<?php class Connection { protected $link; private $server, $username, $password, $db;
public function __construct($server, $username, $password, $db) { $this->server = $server; $this->username = $username; $this->password = $password; $this->db = $db; $this->connect(); }
private function connect() { $this->link = mysql_connect($this->server, $this->username, $this->password); mysql_select_db($this->db, $this->link); }
public function __sleep() { mysql_close($this->link); }
public function __wakeup() { $this->connect(); } } ?>
|
|