9
votes

Comment sauter des arguments lorsque leur défaut est souhaité

Si j'ai une fonction comme ceci: xxx

et je veux $ C pour supposer sa valeur par défaut, mais doit définir $ d $ d < / Code>, comment puis-je continuer à faire cet appel dans PHP?

php

0 commentaires

5 Réponses :


3
votes

php ne supporte pas cela. ( ref ) )


0 commentaires

0
votes

Je ne crois pas que vous puissiez le faire dans PHP.


0 commentaires

12
votes

php ne peut pas faire cela, malheureusement. Vous pouvez contourner cela en vérifiant pour NULL. Par exemple: xxx

alors vous appelleriez la fonction comme ceci: xxx

Non, ce n'est pas vraiment joli, mais ce n'est pas vraiment jolie, mais ça fait le travail. Si vous vous sentez vraiment aventureux, vous pourriez passer dans un tableau associatif au lieu des deux derniers arguments, mais je pense que c'est bien plus de travail que vous le souhaitez.


5 commentaires

+1 beau travail autour. Je laisserais probablement la partie $ = 'foo' dans la signature car la vérification null traite la valeur par défaut.


True, mais si vous voulez omettre les deux $ C et $ d ? Il lancerait maintenant une erreur car la fonction a 3 arguments requis.


Le problème est que mes fonctions ont plus de 5 Vares. Ceci est pour un système d'éventuelles personnes futures qui ne sont pas prises PHP Savvy pour manipuler le code en définissant des variables spécifiques.


Comme je l'ai dit, il n'y a pas d'autre moyen de le faire. Vous pourriez, comme je l'ai mentionné, transmettez une matrice associative dans la fonction et définissez simplement toutes les valeurs non définies sur leurs valeurs par défaut. Mais sinon, tu n'as pas de chance; Pardon.


J'utilise syntaxtique et c'est génial github.com/topclauy/php-syntatactique



4
votes

Les tableaux associatifs ne sont pas si mauvais ici, surtout lorsque la liste des arguments commence à devenir plus grande: xxx pré>

Si vous vouliez explicitement faire certains d'entre eux requis, vous pouvez les mettre à l'avant: P>

function abc($a, $b, $args = array()) {

}


0 commentaires

0
votes

Et si vous mettez tous vos paramètres dans un objet d'argument, puis analysez cela? XXX


0 commentaires