|
Table des matières
CIV. OverloadIntroductionLe but de cette extension est de permettre de maîtriser les appels aux méthodes et aux membres d’un objet. Seule une fonction est définie dans cette extension, overload() qui demande le nom de la classe qui doit supporter cette fonctionnalité. Cette classe doit être pourvue des méthodes nécessaires au bon fonctionnement de l’extension, c’est-à-dire : "__get()", "__set()" et "__call()", qui servent respectivement à lire, à modifier un membre et à appeler une méthode. De cette manière, l’overloading assure un contrôle sur les fonctions appelées. À l’intérieur de ces méthodes, l’overloading est désactivé, pour que vous puissiez accéder à l’objet.
Pré-requisCes fonctions sont disponibles dans le module PHP standard, qui est toujours accessible. InstallationAfin d’utiliser ces fonctions, vous devez compiler PHP avec l’option “–enable-overload”. Depuis PHP 4.3.0, cette extension est activée par défaut. Pour la désactiver, utilisez l’option “–disable–overload”. La version Windows de PHP dispose du support automatique de cette extension. Vous n’avez pas à ajouter de bibliothèque supplémentaire pour disposer de ces fonctions.
Configuration à l'exécutionCette extension ne définit aucune directive de configuration. Types de ressourcesCette extension ne définit aucune ressource. Constantes pré-définiesCette extension ne définit aucune constante. ExemplesVoici un exemple simple de fonctions utilisant overload() :
<?php class OO { var $a = 111; var $elem = array('b' => 9, 'c' => 42); // Fonction de callback pour la lecture de membre function __get($prop_name, &$prop_value) { if (isset($this->elem[$prop_name])) { $prop_value = $this->elem[$prop_name]; return true; } else { return false; } } // Fonction de callback pour l'écriture de membre function __set($prop_name, $prop_value) { $this->elem[$prop_name] = $prop_value; return true; } } // Ici, l'initiation de l'overload overload('OO'); $o = new OO; echo "\$o->a: $o->a\n"; // $o->a: 111 echo "\$o->b: $o->b\n"; // $o->b: 9 echo "\$o->c: $o->c\n"; // $o->c: 42 echo "\$o->d: $o->d\n"; // $o->d: // ajouter une nouvelle valeur au membre $elem, en programmation OOP $o->x = 56; // instantiation de la classe stdclass (elle existe par défaut en PHP 4) // $val n'est pas overloadée! $val = new stdclass; $val->prop = 555; // Forcez "a" à être un tableau avec l'élément $val // Mais _set() forcera cet élément dans le tableau $elem $o->a = array($val); var_dump($o->a[0]->prop); ?> Table des matières overload – Active la couche de contrôle des membres et méthodes Travail collaboratifContribuez, en ajjoutant des elements a cette page de manuel : Merci de votre aide |