2010-10-13 4 views

Répondre

1

Vous voulez dire surcharger la méthode? Tu ne peux pas. PHP ne supporte pas la surcharge. Vous devez créer une nouvelle méthode dans la même classe ou la remplacer dans une classe enfant. .. ou ce serait le cas à l'exception des méthodes __call() et __callStatic(). Ils vous permettent de transmettre le nom et les arguments de la méthode en tant que paramètres. Vous pouvez vérifier le nom de la méthode et les arguments pour simuler la surcharge. Si les arguments sont différents mais que le nom de la méthode est le même, faites une chose différente de la normale.

3

Peut avoir déjà reçu une réponse dans ce question here. Réponse courte, vous pouvez le faire avec PHP runkit, mais il semble horriblement obsolète (c'est-à-dire n'a pas été touché depuis 2006) et peut ne plus fonctionner.

Votre meilleur pari peut être de renommer la classe d'origine et de l'étendre avec une nouvelle classe avec le nom d'origine. C'est

class bad_class { 
    public function some_function { 
     return 'bad_value'; 
    } 
} 

devient

class old_bad_class { 
    public function some_function { 
     return 'bad value'; 
    } 
}   

class bad_class extends old_bad_class { 
    public function some_function { 
     return 'good value'; 
    } 
} 
-1

Sans vous pouvez étendre appeler la méthode d'une classe dans d'autres. Mais c'est une mauvaise pratique.

class First 
{ 
    public function doIt() 
    { 
     echo 'Done'; 
    } 
} 

class Second 
{ 
    public function doIt() 
    { 
     $first = new First; 
     $first->doIt(); 
    } 
} 
+0

Dans quelle situation seriez-vous en mesure de créer et d'utiliser une nouvelle classe de manière conditionnelle, mais pas d'étendre une autre classe? –

Questions connexes