Skip to main content

PHP 7.3 im Anmarsch: Das gibt’s Neues

PHP 7.3 steht in den Startlöchern. Die neueste PHP-Version ist gespickt mit Funktionalitäten, die das Webentwickler-Leben einfacher machen. Wir zeigen, welche Neuerungen und Änderungen PHP 7.3 mitbringt.

PHP 7.3 im Anmarsch: Das gibt's Neues

Gelockerte Syntax für Heredoc und Nowdoc

Heredoc und Nowdoc sind Möglichkeiten um Strings zu definieren. Die Syntax-Vorgaben für die beiden Methoden sind mit PHP 7.3 weniger streng. Neben Heredoc und Nowdoc dürften einfache und doppelte Anführungszeichen die bei PHP-Entwicklern bekanntesten Methoden sein, um Strings zu definieren.

Heredoc funktionieren wie doppelte Anführungszeichen. Im Text vorkommende Variablen werden also vom PHP-Interpreter in den entsprechenden Wert umgewandelt. Ausserdem müssen Anführungszeichen nicht maskiert werden. Was Heredoc und doppelte Anführungszeichen verbindet, verbindet Nowdoc und einfache Anführungszeichen. In Heredoc müssen Anführungszeichen maskiert werden. Ausserdem werden Variablen 1:1 ausgegeben und nicht deren Wert.

Bis PHP 7.3 mussten die abschliessenden Markierungen für Heredoc und Nowdoc auf einer neuen Zeile zu Beginn erscheinen. Ab PHP 7.3 dürfen diese Markierungen nun auch eingerückt sein:

$foo = <<<HALLO
  HALLO_WELT <-- Beendet das Heredoc-Literal nicht.
  HALLOWELT  <-- Beendet das Heredoc-Literal ebenfalls nicht. 
  HALLO WELT <-- Beendet das Heredoc-Literal neu mit PHP 7.3
HALLO;

Während in früheren Versionen der Heredoc mit HALLO; auf der letzten Zeile geendet hätte, wird HALLO auf Zeile 4 ab PHP 7.3 nun als Ende des Literals interpretiert.

Abschliessendes Komma in Funktions- und Methodenaufrufen

Aufrufe von Funktionen und Methoden dürfen nun ein abschliessendes Komma enthalten. So ist neu folgender Code valide:

// regular functions.
foo('bar', 'baz',); // Neu ist in Funktions- und Methodenaufrufen ein abschliessendes Komma erlaubt.

Das macht den Umgang mit Funktionen und Methoden in vielen Fällen einfacher, weil nicht darauf geachtet werden muss, ob ein abschliessendes Komma vorhanden sein darf.

In der Deklaration von Funktionen und Methoden ist ein abschliessendes Komma jedoch weiterhin nicht erlaubt:

function foo($bar, $baz, ) { // Ein abschliessendes Komma in Deklarationen ist weiterhin nicht erlaubt
}

Referenzzuweisung in list()

Bisher waren Referenzzuweisungen in der Funktion list() nicht möglich. Ab PHP 7.3 ist nun aber folgender Code valide:

$array = [1, 2];
list($a, &$b) = $array;

Damit wird der Variable $b der zweite Wert des Arrays $array zugewiesen. Mit der neuen Funktion ist nun das gleichzeitige Zuweisen mehrerer Referenzwerte zu mehreren Variablen möglich.

Arrays einfacher auslesen

Arrays sind mächtigen Datenkonstrukte. Bisher fehlte allerdings ein Bordmittel, den ersten oder letzten Schlüssel eines Arrays auszugeben. Mit den neuen Funktionen array_key_first() und array_key_last() sind diese beiden Operationen nun von Haus aus möglich. Im entsprechenden RFC wurden ausserdem die beiden neuen Funktionen array_value_first() und array_value_last() vorgeschlagen, die das Auslesen des ersten und letzten Werts eines Arrays vereinfacht hätten. In der Entscheidungsabstimmung sprach sich jedoch eine Mehrheit gegen eine Einführung aus.

Objekt zählbar?

Mit PHP 7.2 wurde bereits eine Warnung eingeführt, wenn count() auf ein Objekt angewendet wird, das die Funktion nicht unterstützt. Bislang musste man sich eine entsprechende Prüfungsfunktion allerdings selbst bauen:

if (is_array($foo) || $foo instanceof Countable) {
    return count($foo);
}

Mit PHP 7.3 und der neu eingeführten Funktion is_countable() kann man sich dieses Konstrukt sparen. Die Funktion liefert zurück, ob ein Objekt zählbar ist.

Sinnvolle Fehlermeldungen für JSON

Mit json_encode() und json_decode() kann PHP seit Version 5.2 mit Daten im verbreiteten JSON-Format umgehen. Bislang wurde bei einem Fehler der Wert null zurückgeliefert. Der Haken an der Sache: null kann in JSON ein gewünschter Wert sein. Ob es sich bei null also um einen Fehler oder doch den in der Tat zugewiesenen Wert handelt, war bisher nur schwer herauszufinden. Mit der neu geschaffenen Option JSON_THROW_ON_ERROR lässt sich nun das Verhalten der beiden JSON-Funktionen im Fehlerfall verändern, um eine klarere Rückmeldung zur Fehlerquelle zu erhalten.

Veraltete Funktionalitäten in PHP 7.3

Mit einer neuen PHP-Version werden nicht nur neue Funktionalitäten eingeführt, sondern auch alte Zöpfe abgeschnitten. Zu jeder guten Software-Version gehört schliesslich auch, dass Altlasten aufgeräumt werden. Als veraltet markierte Funktionalitäten werden spätestens mit Version 8.0 aus dem PHP-Code verschwinden.

Mit der Grafikerweiterung GD und deren Funktion image2wbmp() können Bilder im Wireless-Bitmap-Format (WBMP) erzeugt werden. Die Schwester-Funktion imagewbmp() verhält sich seit PHP 5.0 praktisch identisch, weshalb image2wbmp() spätestens mit PHP 8.0 verschwinden wird. Sollten Sie die Funktion in Ihrem Code im Einsatz haben, können Sie die entsprechenden Stellen einfach mit imagewbmp() ersetzen.

Bisher war es möglich, Konstanten zu definieren und sie dabei «case-insensitive» zu machen. Für den Aufruf der Konstante musste damit nicht zwischen Gross- und Kleinschreibung unterschieden werden. Mit PHP 7.3 liefert sowohl die Definition als auch der Aufruf einer Konstante eine Deprecation-Warnung, wenn die Option «case-insesitive» für die Konstante gesetzt ist. Nach gängiger Konvention werden Konstanten sowieso immer in Grossbuchstaben geschrieben.

PHP 7.3 jetzt schon testen

Nebst den oben erwähnten Neuerungen und Änderungen bietet PHP 7.3 weitere kleinere Verbesserungen. Ausführliche Informationen zum Hintergrund aller Änderungen finden Sie in den offiziellen sogenannten «Requests for Comments», kurz RFCs.

PHP 7.3.0, also die erste Version die auch für produktive Applikationen geeignet ist, soll am 06. Dezember 2018 erscheinen. Die Vorabversion, den sogenannten «Release Candidate», können Sie bei uns jetzt schon testen. Wählen Sie dazu PHP 7.3 einfach in Ihrem my.cyon-Konto für die gewünschten Verzeichnisse aus: Wie kann ich die PHP-Version eines Verzeichnisses ändern?

Originaler Post

PHP 7.3 im Anmarsch: Das gibt’s Neues
Jetzt Bewerten!


Keine Kommentare vorhanden

Roman Güntert