48 votes

Valeurs par défaut des paramètres de la fonction PHP, comment "passer la valeur par défaut" pour les paramètres "not last" ?

La plupart d'entre nous connaissent la syntaxe suivante :

function funcName($param='value'){
    echo $param;
}
funcName();

Result: "value"

Nous nous demandions comment transmettre des valeurs par défaut pour le paramètre "not last" ? Je sais que cette terminologie est très éloignée, mais un exemple simple serait le suivant :

function funcName($param1='value1',$param2='value2'){
    echo $param1."\n";
    echo $param2."\n";
}

Comment pouvons-nous accomplir ce qui suit :

funcName(---default value of param1---,'non default');

Résultat :

value1
not default

J'espère que cela a un sens, nous voulons fondamentalement assumer les valeurs par défaut pour les paramètres qui ne sont pas les derniers.

Merci.

0 votes

Je ne comprends vraiment pas votre question / problème votre deuxième exemple fonctionne bien

0 votes

Le problème n'est pas que la fonction

1 votes

Je m'excuse de ne pas avoir été clair. Mais franchement, je ne sais pas comment exprimer 'assumer la valeur par défaut pour un paramètre qui n'est PAS le dernier de la liste des paramètres'.

0voto

Gundark Points 26

Je travaille sur une nouvelle application dans laquelle je dois appeler une fonction amqp pour publier un message sur un échange de rabbitmq. Je veux accepter la valeur par défaut du troisième paramètre (flags), mais passer un tableau dans le quatrième paramètre (attributes). Le passage d'une chaîne vide (pratique courante dans un autre langage que j'utilise fréquemment) a fait échouer la méthode de publication.

Comme je ne possède pas le code des bibliothèques php amqp, je ne peux pas redéfinir les paramètres des fonctions pour les adapter à mon application. Je devais donc trouver une solution à la même question que vous. Finalement, le passage d'un mot-clé null est ce qui a fonctionné :

$result = $exchange->publish($message, $routing.key, null, $attributes);

Malheureusement, je ne sais pas si cela fonctionnerait avec toutes les fonctions php. Cela dépendrait du fait que la fonction vérifie en interne les valeurs nulles avant de définir les valeurs par défaut, comme Jeroen l'a suggéré ci-dessus. Si une approche plus simple est utilisée, comme le comptage du nombre de paramètres entrants, cela échouerait très probablement.

Je suis assez novice en matière de php, donc je n'en suis pas sûr. Mais j'espère que l'approche de Jeroen en matière de vérification des nullités est une pratique de codage standard pour les paramètres optionnels, et que nous pouvons nous attendre à ce que le 'null' fonctionne avec la plupart ou la totalité des fonctions php.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X