Methode et Signature

Petit nouveau ! | 4 Messages

02 juin 2010, 09:17

Est ce qu'une Méthode d'une classe ayant un paramètre peut être appelée avec deux paramètres voire plus?
sans pour autant faire appel a __call().
par ex:
classe maClasse
{
    public function maMethode($monParametre)
    {
        //code
    }
}

et aillieur faire par ex:
$monObj = new maClasse()
$monObjet->maMethode('Param1', 'Param2')

Eléphant du PHP | 217 Messages

02 juin 2010, 09:24

Vous pouvez le faire mais ce n'est pas très recommandé pour la maintenance applicative.

pour récuperer la liste des paramètres utilisez la fonction func_get_args() qui renvoi un tableau indexé numériquement.

Petit nouveau ! | 4 Messages

02 juin 2010, 09:30

Alors il n'y a aucun respect de la signature d'une Methode.
donc maMethode('Param1') = maMethode('Param1', 'Param2')?

Eléphant du PHP | 217 Messages

02 juin 2010, 09:40

C'est de la surcharge de méthode.

Après si vous vous être retrouvé "coincé" par ce problème de manque d'un deuxième argument pourquoi ne pas rajouter le deuxième argument dans la signature de votre méthode avec une valeur null par défaut puis tester ce deuxième argument dans le corps de la fonction ?
class A{
    public function test($arg1, $arg2 = null)
    {
        if($arg2 !== null)
        {
            // faire quelquechose
        }
    // reste du code
    }
}

Petit nouveau ! | 4 Messages

02 juin 2010, 10:06

Oki, merci^^

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 juin 2010, 10:11

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer