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!