Sommaire
Référence des fonctions
Apache
Tableaux
Aspell
Nombres de grande taille
Compression Bzip2
Calendrier
Paiement CCVS
Support COM pour Windows
Objets
ClibPDF
Crack
CURL
Paiement Cybercash
CyberMUT : Crédit Mutuel
Administration Cyrus IMAP
Caractères
DBA
Dates et heures
dBase
DBM
dbx
DB++ Functions
Direct IO
Accès aux dossiers
DOM XML
.NET
Gestion des erreurs
FrontBase
FilePro
Système de fichiers
Forms Data Format
FriBiDi
FTP
Fonctions
Gettext (GNU)
GMP
HTTP
Hyperwave
ICAP
Iconv
Images
IMAP
Informix
InterBase
IRC
Java
LDAP
Email
Traitement de email
Mathématiques
Chaînes de caractères multi-octets
MCAL
Chiffrage mcrypt
Fonctions MCVE
Hash
Microsoft SQL Server
Ming pour Flash
Fonctions diverses
mnoGoSearch
mSQL
MySQL
Sessions Mohawk
Fonctions muscat
Réseau
Ncurses : fonctions de contrôle du terminal
Lotus Notes functions
ODBC unifié
Oracle 8
OpenSSL
Oracle
Ovrimos SQL
Entrées/sorties
Overload
PDF
Paiement par Verisign
Options PHP et informations
POSIX
PostgreSQL
Contrôle des processus
Exécution de programmes externes
Printer functions
Pspell
Readline (GNU)
Recode (GNU)
Expressions régulières compatibles Perl
qtdom
Expressions régulières
Sémaphores et gestion de la mémoire partagée
SESAM
Sessions
Mémoire partagée
Shockwave Flash
SNMP
Sockets
Chaîne de caractères
Sybase
URL
Variables
Fonctions vpopmail
API Windows 32 bits
WDDX
Analyseur syntaxique XML
XMLRPC
XSLT
YAZ
NIS
Zip (décompression)
Zlib (Compression)
|
6.73 Overload
Attention |
Ce module est EXPERIMENTAL . Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utiliser ce module à vos risques et périls.
|
Le 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 supporte cet fonctionnalité. Cette classe doit
être pourvue des méthodes nécessaire au bon fonctionnement de l'extension,
c'est à dire : __get(), >literal>__set() et
__call(), qui servent respectivement à lire et modifier
un membre, et appeler une méthode. De cette manière, l'overloading
assure un contrôle sur les fonctions appelées. A l'intérieur de ces
méthodes, l'overloading est désactivé, pour que vous puissiez accéder
à l'objet.
Voici un exemple simple de fonctions utilisant overload :
Overload avec une classe PHP |
<?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; print "\\$o->a: $o->a\n"; // print: $o->a: print "\\$o->b: $o->b\n"; // print: $o->b: 9 print "\\$o->c: $o->c\n"; // print: $o->c: 42 print "\\$o->d: $o->d\n"; // print: $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); ?>
|
Attention |
Comme c'est une extension expérimentale, tout ne fonctionne pas encore.
Il n'y a pas de support pour __call() actuellement,
et nouvs ne pouvez overloader que des accesseurs. Vous ne pouvez
pas appeler les fonctions d'overload de la classe, et
__set() ne fonctionne que pour un
seul niveau d'accesseur.
|
Sommaire
- overload : Active la couche de contrôle des membres et méthodes
|