Der ternäre Bedingungsoperator in PHP ist seit langem ein fester Bestandteil der Sprache und ermöglicht prägnante Wenn-Dann-Sonst-Anweisungen. In PHP 5.3 erhielt dieser Operator eine neue Form, die seine Verwendung weiter optimiert.
Zuvor hatte der ternäre Operator die Form:
<code class="php">expr ? val_if_true : val_if_false</code>
In PHP 5.3 kann der mittlere Ausdruck jedoch weggelassen werden, was zu Folgendem führt:
<code class="php">expr ?: val_if_false</code>
Dies entspricht:
<code class="php">expr ? expr : val_if_false</code>
Bedenken das folgende Beispiel:
<code class="php">require __DIR__.'/c.php'; if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); $c();</code>
Hier wird der Operator ?: verwendet, um der Variablen $c einen Standardwert zuzuweisen, wenn die Bedingung @$_GET['c'] als falsch ausgewertet wird. Wenn @$_GET['c'] nicht gesetzt ist oder eine ungültige Funktion ist, wird $c die anonyme Funktion zugewiesen, die „Woah!“ anzeigt. an den Benutzer.
Anonyme Funktionen gibt es zwar schon seit einiger Zeit in PHP, aber sie haben in PHP 5.3 neue Vielseitigkeit erlangt. Mit anonymen Funktionen, auch als Abschlüsse bekannt, können Sie Funktionen inline definieren, ohne ihnen einen Namen zu geben.
Im obigen Beispiel ist die anonyme Funktion wie folgt definiert:
<code class="php">function() { echo 'Woah!'; }</code>
Das kann sein Wird wie jede andere benannte Funktion aufgerufen, in diesem Fall unter Verwendung der Variablen $c.
Das obige ist der detaillierte Inhalt vonWas ist neu in PHP 5.3: der Condensed Ternary Operator und anonyme Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!