Maison >développement back-end >tutoriel php >Comment utiliser les arguments par défaut dans les fonctions PHP lorsque vous souhaitez uniquement en remplacer certains ?

Comment utiliser les arguments par défaut dans les fonctions PHP lorsque vous souhaitez uniquement en remplacer certains ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-29 09:22:30573parcourir

How to Use Default Arguments in PHP Functions When You Only Want to Override Some of Them?

Utilisation d'arguments par défaut dans les fonctions PHP

Lors de l'attribution de valeurs par défaut aux paramètres de fonction en PHP, il est important de comprendre leurs limites. Considérons une fonction avec des paramètres tels que :

<code class="php">function foo($blah, $x = "some value", $y = "some other value")</code>

Et si vous souhaitez utiliser l'argument par défaut pour $x mais spécifier une valeur différente pour $y ?

Passer null pour $x ne fonctionne pas Cela ne fonctionne pas car PHP l'interprète comme une omission intentionnelle d'une valeur. Pour résoudre ce problème, envisagez l'approche suivante :

<code class="php">function foo($blah, $x = null, $y = null) {
    if (null === $x) {
        $x = "some value";
    }

    if (null === $y) {
        $y = "some other value";
    }

    // Code here!
}</code>

Avec cette modification, vous pouvez appeler foo('blah', null, 'test') pour utiliser la valeur par défaut pour $x et spécifier une valeur personnalisée pour $y.

Il est important de noter que le mécanisme de paramètres par défaut de PHP s'applique aux derniers arguments d'une fonction. Si l'argument souhaité n'est pas le dernier, vous ne pouvez pas omettre les arguments par défaut.

Dans les situations où vous souhaitez gérer différents nombres et types de paramètres, vous pouvez envisager une approche plus flexible :

<code class="php">public function __construct($params = null)
{
    if ($params instanceof SOMETHING) {
        // Single parameter of type SOMETHING
    } elseif (is_string($params)) {
        // Single string argument
    } elseif (is_array($params)) {
        // Array of properties
    } elseif (func_num_args() == 3) {
        // 3 parameters passed
    } elseif (func_num_args() == 5) {
        // 5 parameters passed
    } else {
        throw new \InvalidArgumentException("Could not figure out parameters!");
    }
}</code>

Cette méthode offre une plus grande flexibilité dans la gestion de divers scénarios de saisie.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn