For coders TYPO3 Tech Corner

Null-Safe Operator im TYPO3-Bereich

Null-Safe Operator im TYPO3-Bereich

Spätestens mit dem Einzug von PHP8 kann es an vielen Stellen zu Problemen mit undefinierten Arrays oder Variablen im Allgemeinen kommen. Hier ein paar Beispiele und einfache Lösung dafür.

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

Alex Kellner

Alex Kellner ist nicht nur für seine vielen TYPO3-Erweiterungen wie zum Beispiel powermail, femanager oder lux sondern auch für seinen Community-Einsatz bekannt. Er gibt auch gerne Administrations- oder Entwicklungsschulungen oder Worksshops.

Alexander Kellner  |  Geschäftsführung & COO

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

SQL: Zeige alle Tabellen absteigend nach Größe sortiert

Ich brauche in letzter Zeit häufiger den SQL-Befehl, um herauszufinden, welche Tabellen in der TYPO3-Datenbank am größten sind. Ich habe das Snippet einmal veröffentlicht.

Zum Beitrag

TYPO3 12 mit CKEditor 5: Stile als Einfachauswahl

Wenn man im RTE in TYPO3 einen Link setzt, kann es sein, dass man zwischen verschiedenen Link-Klassen auswählen muss, um beispielsweise Buttons im Frontend zu erzeugen. Neu ist in TYPO3 12 dass man...

Zum Beitrag

Die ersten/letzten Zeilen einer (SQL)-Datei löschen

Zu den nachfolgenden Befehlen gibt es eigentlich nicht viel zu sagen. Manchmal kann es nützlich sein, die ersten (bzw. letzten) X Zeilen aus einer Datei zu löschen. Und wenn die Datei zu groß zum...

Zum Beitrag

b13/container: Kindelemente in der Bearbeitungsansicht hinzufügen und ändern

Anders als in gridelements kann man in der Extension Container von B13 die Kindelemente nicht verwalten, wenn man den Container in der Bearbeitungsansicht öffnet. Wie man das schnell selber einbauen...

Zum Beitrag

Menü-Vergleich: Zahlen, Zahlen, Zahlen

Zum Beitrag

Dropdown-Menü ohne Last - mittels Multilevel-Cache

Zum Beitrag