Im PHP-Bereich stolpert ihr sicher einmal über Variablen die ein erwartendes Objekt nicht beinhalten oder Arrays die einen bestimmten Key nicht gesetzt haben. Diverse IF-Conditions wurden vielleicht auch schon eingefügt. Hier ein paar Beispiele, wie man mit Hilfe eines Null-Save Operators smarten Code schreiben kann.
PHP
Hier ein kurzes Beispiel für Arrays:
# Old
$color = '';
if (array_key_exists('color', $this->settings)) {
$color = $this->settings['color'];
}
# New
$color = $this->settings['color'] ?? '';
Und hier für Funktions- und Property-Aufrufe:
# Old
$address = $customer->getAddress();
$country = null;
if ($address->getCountry() !== null) {
$country = $address->getCountry();
}
# Not quite so old
$address = $customer->getAddress();
$country = $address ? $address->getCountry() : null;
# New
$country = $customer->getAddress()?->getCountry();
# Alternative example
$tsfe = $GLOBALS['TSFE'] ?? null;
$id = (int)$tsfe?->id;
TypoScript
Auch in TypoScript ist das Thema bereits angekommen. Gerade bei der Verwendung von Conditions kann es schnell zu Problemen kommen. Hier ein Beispiel wenn $GLOBALS['TSFE'] nicht zur Verfügung steht (z.B. im Backend- oder CLI-Kontext):
# Old
[getTSFE().type == 123]
# New
[getTSFE()?.type == 123]
JavaScript
Einen haben wir noch. Auch in JavaScript kann man unnötige IF-Conditions vermeiden mit einem Null-Save Operator:
# Old
let myValue = '';
const element = document.querySelector('[data-foo]');
if (element !== null) {
myValue = element. getAttribute('data-foo');
}
# New
let myValue = document.querySelector('[data-foo]')?.getAttribute('data-foo');