Services webmasters
Partenaires
Jeux concours gratuits
 
Constantes prédefinies
<<<
Exemples overload
>>>

7.77 Overload
7 Index des fonctions
 Manuel PHP

Introduction
Pré-requis
Installation
Configuration à l'exécution
Types de ressources
Constantes prédefinies
->Exemples
overload

7.77.7 Exemples

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"
\$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.

<< Exemples >>
Constantes prédefinies Overload overload
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -