Ternary, null coalescing and nullsafe
| The ternary operator | |
| Null coalescing ?? | |
| Nullsafe operator | |
| Keep it readable |
The ternary operator
The ternary operator picks one of two values in a single expression: condition ? value_if_true : value_if_false. It shines for tiny choices such as labels, defaults, and plural forms.
$age = 20; $label = $age >= 18 ? "adult" : "minor"; echo $label;
More examples live on the ternary operator page. Reach for a plain if statement as soon as either branch needs more than one action.
Null coalescing ??
The ?? operator returns its left side unless that side is missing or null, with no notice raised. It is the short form of isset checks, and it chains: PHP takes the first defined, non-null value from left to right.
$name = $_GET["name"] ?? "guest"; $theme = $prefs["theme"] ?? $defaultTheme ?? "light"; echo $name;
Nullsafe ?->
The nullsafe operator short-circuits a whole method and property chain to null as soon as one link is null. It replaces pyramids of manual checks before every call in the chain.
$city = $order?->getCustomer()?->getAddress()?->city; echo $city ?? "unknown";
Keep it readable
Ternaries nest badly: two levels already force the reader to simulate the parser. Flatten nested choices into if and elseif, or into a match expression, so each outcome sits on its own line.
$fee = $isMember ? 0 : ($isStudent ? 5 : 10);
The same logic reads better as branches:
if ($isMember) { $fee = 0; } elseif ($isStudent) { $fee = 5; } else { $fee = 10; }
Next: Loops
Article author: Arthur Isaev