|
Table des matières
Méthodes magiquesLes noms de fonction "__construct", "__destruct" (voir les Constructeurs et Destructeurs), "__call", "__get", "__set", "__isset", "__unset" (voir la surcharge), "__sleep", "__wakeup", "__toString", "__set_state", __clone et __autoload sont magiques dans les classes PHP. Vous ne pouvez pas utiliser ces noms de fonction dans aucune de vos classes sauf si vous voulez modifier le comportement associé à ces fonctions magiques.
"__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.
<?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(); } } ?> "__toString"La méthode "__toString" détermine comment la classe doit réagir lorsqu’elle est convertie en chaîne de caractères.
<?php // Déclaration d'une classe simple class ClasseTest { public $foo; public function __construct($foo) { $this->foo = $foo; } public function __toString() { return $this->foo; } } $class = new ClasseTest('Bonjour'); echo $class; ?>
Il est important de noter qu’avant PHP 5.2.0, la méthode "__toString" n’était appelée que si elle était directement combinée avec echo() ou print(). "__set_state"Cette méthode statique est appelée pour les classes exportées par la fonction var_export() depuis PHP 5.1.0. Le seul paramètre de cette méthode est un tableau contenant les propriétés exportées sous la forme “array(’propriété’ ⇒ valeur, ...)”. Travail collaboratifContribuez, en ajjoutant des elements a cette page de manuel : Merci de votre aide |