Maison > Article > développement back-end > Comment remplacer les arguments de fonction par défaut en PHP tout en conservant les autres ?
Remplacement des arguments de fonction par défaut en PHP
Les fonctions PHP prennent en charge l'utilisation d'arguments par défaut pour définir des valeurs de secours lors de l'appel de la fonction. Cependant, définir un argument spécifique tout en conservant la valeur par défaut de ses arguments précédents peut s'avérer difficile.
Considérez la fonction suivante :
<code class="php">function foo($blah, $x = "some value", $y = "some other value") { }</code>
Les arguments par défaut pour $x et $y sont "certains valeur » et « une autre valeur », respectivement. Mais que se passe-t-il si vous souhaitez remplacer la valeur par défaut de $y tout en utilisant la valeur par défaut de $x ?
Tentatives de remplacement de la valeur par défaut en utilisant null, telles que :
<code class="php">foo("blah", null, "test"); // Does not work</code>
ou
<code class="php">foo("blah", "", "test"); // Does not work</code>
ne donnera pas le résultat souhaité.
Une autre approche, attribuant la variable par défaut à un nom nommé variable, comme :
<code class="php">foo("blah", $x, $y = "test");</code>
ne parvient pas non plus à remplacer la valeur par défaut.
Pour surmonter ce défi, modifiez la déclaration de fonction comme suit :
<code class="php">function foo($blah, $x = null, $y = null) { if (null === $x) { $x = "some value"; } if (null === $y) { $y = "some other value"; } }</code>
Cela vous permet de passer des appels comme :
<code class="php">foo('blah', null, 'non-default y value');</code>
tout en conservant la valeur par défaut de $x.
Remarque :Arguments par défaut uniquement fonctionnent comme derniers arguments de la fonction. Omettre un paramètre et remplacer un paramètre suivant n'est pas possible lors de la déclaration de valeurs par défaut dans la définition de la fonction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!