Logo 6tech
Accueil du site > Tutoriaux > La surcharge de fonctions

La surcharge de fonctions

 Appel de méthode d’objet

En Php5, on peut récupérer les appels de méthodes et traiter les informations d’une façon différente grâce à la méthode __call() qui s’occupera de gérer les appels aux fonctions inexistantes.

Exemple avec __call()

<?php
class Pizzeria {

    private 
$pizzaCounter 0;
    private 
$pizzaStorage = array();

    public function 
__call($name$args) {
        
// Si la méthode appelée s'appelle 'modifyPizza'
        
if( $name == 'modifyPizza' ){
            
$argsCount count$args );
            
// Si il y a un argument passé à la fonction
            
if( $argsCount == ){
                
// On va ajouter une pizza
                
return call_user_func_array(array(&$this'addPizza'), $args);
            
// Si il y'en a deux
            
} else if( $argsCount == ){
                
// On va modifier le nom d'une pizza
                
return call_user_func_array(array(&$this'modifyPizzaName'), $args);
            }
        }
    }
    
    public function 
addPizza($name){
        
$this -> pizzaStorage[$name] = (int)$this -> pizzaStorage[$name] + 1;
    }
    
    public function 
modifyPizzaName($oldName$newName){
        
// On récupère le nombre de pizza anciennement nommée oldName
        
$pizzaStock = (int)$this -> pizzaStorage[$oldName];
        
// On supprime l'entrée correspondante
        
unset($this -> pizzaStorage[$oldName]);
        
// On créé la nouvelle entrée
        
$this -> pizzaStorage[$newName] = $pizzaStock;
    }
    
}

$pizzeria = new Pizzeria();
$pizzeria -> modifyPizza('Pizza aux 4 fromages'); // on créé un stock de 1 pour les "Pizza aux 4 fromages"
$pizzeria -> modifyPizza('Pissaadiè'); // on créé un stock de 1 pour les "Pissaadiè"
// Mais on a fait une faute on décide de changer le nom
$pizzeria -> modifyPizza('Pissaadiè''Pissaladière'); // on change le nom des "Pissaadiè" en "Pissaladière"
?>

 Surchage de getter et setter

De la même manière il est possible de surcharger les getters et setters d’une classe par la définition des méthodes __get() et __set() qui vont automatiquement attraper les fonctions get**** et set**** si elles n’existent pas. Ensuite en jouant sur le nom de la fonction appelée ou le nombre d’argument, on peut facilement créer des profile de fonction différent.

La surcharge de méthode prend un aspect différent des autres langages et s’affiche plus comme étant une liste de méthode de substitution et non de réel surcharge.

 Le gestionnaire d’erreur de PHP

Il est possible également de redéfinir un gestionnaire en php et de récupérer les erreurs liés à un appel de fonction pour effectuer un autre traitement puis de continuer le reste de l’exécution du script.

Ceci sera plus détaillé dans un article sur les gestions d’erreurs en PHP

bas de page Contact - EIC 6tech  - SIRET : 479 088 270 00026 - Tel: 0970 406 988 - © 2010