?? und ?-> in PHP – null-Werte elegant abfangen
Endlose isset()-Prüfungen? Mit dem Null-Koaleszenz-Operator ?? und dem Nullsafe-Operator ?-> greifst du sicher auf womöglich fehlende Werte zu – oft in einer einzigen Zeile.
Zwei Operatoren räumen in PHP mit dem isset()-Wust auf: ?? liefert einen Ersatzwert, wenn etwas fehlt oder null ist, und ?-> ruft eine Methode nur auf, wenn das Objekt existiert.
Der Null-Koaleszenz-Operator ??
?? gibt den linken Wert zurück, wenn er gesetzt und nicht null ist – sonst den rechten. Anders als ?: wirft es keine Warnung bei fehlenden Schlüsseln:
// vorher
$seite = isset($_GET['seite']) ? $_GET['seite'] : 1;
// mit ??
$seite = $_GET['seite'] ?? 1;
// verkettbar: erster gesetzter Wert gewinnt
$name = $_POST['name'] ?? $user['name'] ?? 'Gast';Mit ??= weist du nur zu, wenn noch nichts da ist:
$config['timeout'] ??= 30; // setzt 30 nur, falls nicht vorhandenDer Nullsafe-Operator ?->
Eine Kette wie $user->getProfil()->getStadt() knallt, sobald getProfil() einmal null liefert. ?-> bricht die Kette dann sauber ab und liefert einfach null:
// vorher – verschachtelte Prüfungen
$stadt = null;
if ($user !== null) {
$profil = $user->getProfil();
if ($profil !== null) $stadt = $profil->getStadt();
}
// mit ?->
$stadt = $user?->getProfil()?->getStadt(); // null, wenn irgendwas null istBeide kombinieren sich prima: $stadt = $user?->getProfil()?->getStadt() ?? 'unbekannt';
Ein Hinweis zur Abgrenzung: ?? prüft auf null/nicht gesetzt, nicht auf „leer". Ein leerer String '' oder die 0 sind gesetzt und gehen durch – willst du die auch abfangen, brauchst du eine echte Prüfung. Für den häufigen „fehlt oder null"-Fall sind die beiden Operatoren aber Gold wert.
Solchen aufgeräumten Code schreibe ich in jedes Backend. Wenn du eine Website mit sauberer Codebasis brauchst: bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
Das match-Ausdruck in PHP 8 – switch, nur besser
match ist wie switch, aber ein Ausdruck mit Rückgabewert, striktem Vergleich und ohne break-Fallen. Für Zuordnungen ist es kürzer, sicherer und besser lesbar.
Enums in PHP 8.1 – feste Werte typsicher modellieren
Status als "offen"/"bezahlt"-Strings sind fehleranfällig – ein Tippfehler fällt erst zur Laufzeit auf. PHP-8.1-Enums geben dir feste, typsichere Werte mit Methoden, und die IDE meckert sofort.
Eingaben validieren mit filter_var – E-Mail, URL und Zahlen
Nie blind einer Nutzereingabe vertrauen. filter_var prüft E-Mail-Adressen, URLs und Zahlen mit eingebauten Filtern – zuverlässiger und lesbarer als selbstgebaute Regex.