For coders TYPO3 Tech Corner

Null-Safe Operator im TYPO3-Bereich

Null-Safe Operator im TYPO3-Bereich

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');

Zurück

Kennst du das: Immer nur schnell schnell?

Wie wäre es einmal mit Zeit und Respekt für Codequalität? Arbeiten im Team? Automatisierte Tests?

Komm zu uns