6
votes

Comment passer une variable spécifique dans la fonction PHP

J'ai une fonction PHP qui nécessite peut prendre 3 paramètres ... Je souhaite transmettre une valeur pour les 1er et 3ème paramètres, mais je souhaite que le 2e membre de la valeur de la valeur ...

Comment puis-je préciser lesquels je passe, sinon son interprété comme moi de transmettre des valeurs pour les 1er et 2ème emplacements.

Merci.


0 commentaires

4 Réponses :


9
votes

Vous ne pouvez pas "PAS passer" un paramètre qui n'est pas à la fin de la liste des paramètres:

  • Si vous souhaitez spécifier le 3ème paramètre, vous devez transmettre les 1er et 2nd celles li>
  • Si vous souhaitez spécifier le 2e paramètre, vous devez passer le 1er 1 - mais le 3ème peut être laissé de côté, si optionnel. Li> ul>

    Dans votre cas, vous devez transmettre une valeur pour le 2e paramètre - le par défaut, idéalement; qui, oui, vous exige que votre valeur par défaut. p>


    Une alternative possible ne serait pas de votre fonction prendre 3 paramètres, mais un seul, un tableau: p> xxx pré>

    et appelez cette fonction comme ceci: p>

    my_function(array(
        'first' => 'plop',
        'third' => 'glop'
    ));
    
    • accepte tout nombre de paramètres li>
    • Tout ce qui pourrait être optionnel li> ul>

      mais: p>

      • Votre code serait moins facile à comprendre et la documentation serait moins utile: aucun paramètre nommé li>
      • Votre IDE ne serait pas capable de vous donner des indications sur les paramètres de la fonction accepte li> ul> p>


2 commentaires

Oui, je sais ^^ C'est pourquoi les paramètres facultatifs doivent être à la droite de la liste des paramètres et non au milieu ;-) (mais oui, si les 2e et 3ème paramètres sont tous deux facultatifs ...)


Vous pouvez facturer cela avec des utilisations intelligentes de certaines fonctions PHP, mais les extrémités justifient rarement les moyens, voir: php.net/manual/fr/funcunk.func-get-args.php



1
votes

Une fois que vous avez défini un paramètre par défaut, tous les paramètres après celui-ci ne peuvent pas être nécessaires. Vous pouvez faire quelque chose comme:

const MY_FUNCTION_DEFAULT = "default";

public function myFunction($one, $two = "default", $three = 3)
{
   if (is_null($two)) $two = self::MY_FUNCTION_DEFAULT;
   //...
}

// call
$this->myFunction(1, null, 3);


1 commentaires

et je pose des réponses similaires. Il obtient un vote, je suis voté. Comment ça marche?



1
votes

Vous pouvez utiliser la réflexion. Ce problème a déjà été résolu par un contributeur anonyme sur php.net, voir ORINAL ici: http://www.php.net/manual/fr/function.call-user-func-array.php#66121

Pour ceux qui souhaitent mettre en œuvre appeler -Name fonctionnalité dans PHP, telle que mise en œuvre, par exemple dans DB API, voici une version rapide N-sale pour PHP 5 et plus xxx


0 commentaires

-3
votes
function ($foo, $mate, $bar = "") {
  // ... some code
}

2 commentaires

Parce que vous ne pouvez pas avoir de paramètre requis après une option facultative.


En outre, cela ne répond pas à la question à propos de passer des variables spécifiques à des paramètres spécifiques, il ne montre que la création d'une fonction avec des paramètres, dont l'une a une valeur par défaut.