2009-02-10 2 views
2

J'ai cette classe PHPComment puis-je donner un grand nombre de méthodes de classe « presque » le même code

class myclass{ 
     function name($val){ 
      echo "this is name method and the value is".$val; 
     } 

     function password($val){ 
      echo "this is password method and the value is".$val; 
     } 
    } 

et voici comment l'utiliser:

$myclass= new myclass(); 
    $myclass->name("aaa")//output: this is name method and the value is aaa 

cela fonctionne bien parce que J'ai juste 2 méthodes "nom" et "mot de passe" et si j'ai un grand nombre de méthodes, il ne serait pas facile d'ajouter ces méthodes à ma classe et d'écrire le même code pour chaque méthode, je veux changer de classe laisser chaque méthode donner la même sortie en dehors du nom de la méthode? et je ne veux pas écrire tous les détails pour toutes les méthodes car elles sont presque similaires, est-ce possible en PHP? Je voudrais être clair :)

Répondre

14

Vous pouvez substituer la méthode __call() pour la classe, qui est une "méthode magique" qui sera utilisée lorsqu'une méthode inexistante est appelée.

3

Utilisez la méthode magique __call, comme ce qui suit:

class myclass 
{ 
    function __call($func, $args) 
    { 
     echo 'this is ', $func, 'method and the value is', join(', ', $args); 
    } 
} 

Cette fonction sera appelé pour toute fonction qui ne dispose pas d'une définition de fonction explicite.

Notez que $ args est un tableau contenant tous les paramètres avec lesquels la fonction est appelée.