PHP-RFC: Der Coalesce Operator
Kommentare

Es gibt PHP-RFCs, die noch vor der Abstimmung, die nach der zweiwöchigen Diskussionsfrist beginnt, viel positives Feedback einheimsen können. Der, in dem es um den Zungenbrecher Null Coalesce Operator

Es gibt PHP-RFCs, die noch vor der Abstimmung, die nach der zweiwöchigen Diskussionsfrist beginnt, viel positives Feedback einheimsen können. Der, in dem es um den Zungenbrecher Null Coalesce Operator geht, gehört eindeutig dazu. Und in der Tat: das Konzept sieht ausgesprochen spannend aus und könnte dafür sorgen, dass uns künftig eine Menge Tipparbeit erspart bleibt. Doch immer schön ein Schritt nach dem anderen.

Coalesce Operator

Wer, wie wir, erst einmal nachschlagen muss, um die Bedeutung von „Coalesce“ auf die Reihe zu bekommen, dürfte hinterher genau so schlau sein wie vorher: ineinanderfließen, sich verbinden, vereinigen. Am besten erklärt sich der Coalesce Operator jedoch an einem Beispiel, das jeder von uns kennen dürfte:

$name = isset($_GET['name']) ? $_GET['name'] : 'Anonym';

Was passiert, ist uns allen klar: Wurde der Parameter name übergeben, nimmt $name dessen Wert an; wenn nicht, wird als Wert „Anonym“ verwendet.

Das ist natürlich relativ viel Schreibarbeit – aber zum Glück gibt es ja den Short Ternary Operator, mit dem man das oben beschriebene Beispiel so darstellen könnte:

$name = $_GET['name'] ?: 'Anonym';

Das ist allerdings alles andere als ein Best-Practice-Fall, denn wenn der Wert nicht existiert, gibt PHP eine E_NOTICE aus. Genau hier soll der Null Coalesce Operator ins Spiel kommen.

??

Der Coalesce Operator, ??, soll wie folgt funktionieren:

$name = $_GET['name'] ?? 'Anonym';

The coalesce, or ??, operator is added, which returns the result of its first operand if it exists and is not NULL, or else its second operand. This means the $_GET[‚mykey‘] ?? „“ is completely safe and will not raise an E_NOTICE.

Somit handelt es sich dabei um eine Modifikation des Verhaltens des Short Ternary Operators, der im Fall der Fälle die Ausgabe einer E_NOTICE verhindert.

In der Vergangenheit, genauer gesagt seit 2004, gab es bereits einige Diskussionen darüber, das Verhalten des ?:-Operators anzupassen oder ein ifsetor() einzuführen – bisher jedoch ohne Ergebnis. Der jetzige RFC jedenfalls erhält bereits im Vorfeld beispielsweise auf Twitter viel Zuspruch.

Im RFC: Null Coalesce Operator ist als Zielversion PHP 7 angegeben – man darf auf das Ergebnis der Abstimmung gespannt sein; auch wenn es noch ein wenig dauert, bis es zur dazu kommen wird.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -