Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwendet man Standardargumente in PHP-Funktionen, wenn man nur einige davon überschreiben möchte?

Wie verwendet man Standardargumente in PHP-Funktionen, wenn man nur einige davon überschreiben möchte?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-29 09:22:30567Durchsuche

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

Standardargumente in PHP-Funktionen verwenden

Beim Zuweisen von Standardwerten zu Funktionsparametern in PHP ist es wichtig, deren Einschränkungen zu verstehen. Betrachten Sie eine Funktion mit Parametern wie:

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

Was ist, wenn Sie das Standardargument für $x verwenden, aber einen anderen Wert für $y angeben möchten?

Die Übergabe von Null für $x funktioniert nicht. Das funktioniert nicht, weil PHP es als absichtliches Weglassen eines Werts interpretiert. Um dieses Problem zu beheben, ziehen Sie den folgenden Ansatz in Betracht:

<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>

Mit dieser Änderung können Sie foo('blah', null, 'test') aufrufen, um den Standardwert für $x zu verwenden und einen benutzerdefinierten Wert für anzugeben $y.

Es ist wichtig zu beachten, dass der Standardparametermechanismus von PHP für die letzten Argumente in einer Funktion gilt. Wenn das gewünschte Argument nicht das letzte ist, können Sie die Standardargumente nicht weglassen.

In Situationen, in denen Sie unterschiedliche Parameteranzahlen und -typen verarbeiten möchten, können Sie einen flexibleren Ansatz in Betracht ziehen:

<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>

Diese Methode bietet eine größere Flexibilität bei der Handhabung verschiedener Eingabeszenarien.

Das obige ist der detaillierte Inhalt vonWie verwendet man Standardargumente in PHP-Funktionen, wenn man nur einige davon überschreiben möchte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn