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 ... P>
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. P>
Merci. P>
4 Réponses :
Vous ne pouvez pas "PAS passer" un paramètre qui n'est pas à la fin de la liste des paramètres:
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>
et appelez cette fonction comme ceci: p> mais: p>
Une alternative possible ne serait pas de votre fonction prendre 3 paramètres, mais un seul, un tableau: p> my_function(array(
'first' => 'plop',
'third' => 'glop'
));
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 ...) i >
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
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);
et je pose des réponses similaires. Il obtient un vote, je suis voté. Comment ça marche?
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
p>
function ($foo, $mate, $bar = "") { // ... some code }
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.