PHP 8 jetzt verfügbar

Die neueste Veröffentlichung PHP 8 steht ab sofort für alle Kunden zur Verfügung – mit vielen neuen Funktionen und Dank zahlreicher Optimierungen mit noch mehr Tempo unter der Haube.

Auch dieser Blog läuft bereits mit der neuen Version, welche den Fokus auf Leistung und viele neue Erweiterungen legt. Neben neuen JIT-Compilern («Just-In-Time»), welche die Geschwindigkeit sogar verdreifachen können, stehen mit Named Arguments, Union Types, der Constructor Property Promotion, neuen Match Ausdrücken und dem Nullsafe Operator auch für alte Hasen die richtigen Werkzeuge zur Verfügung.

Im Vergleich zu PHP 7.4 kann die Ausführungszeit vieler Berechnungen sogar halbiert werden. Möglich ist dies mit neuen Ansätzen der JIT-Engine, welche den PHP-Code direkt in Maschinencode übersetzen, sodass auf weitere Schichten in der Übersetzung gleich verzichtet wird – so wird der PHP-Code umgehend zu Assembler und kann sofort von der CPU ausgeführt werden.

Einige erwähnte Änderungen fassen wir noch zusammen:

Named Arguments & Nullsafe Operator

Die Reihenfolge und Benennung von Parametern beim Aufruf von Funktionen kann nun frei gewählt werden. So können lediglich erforderliche Parameter angegeben und optionale Parameter mit Named Arguments übersprungen werden.

# PHP 7
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);


# PHP 8
htmlspecialchars($string, double_encode: false);

Der sogenannte Nullsafe Operator erleichtert die Zuweisung von Variablen bei der Abarbeitung mehrerer Bedingungen ganz erheblich. So wird nun der Wert zugewiesen, der zuerst kein NULL zurückgibt bzw. definiert ist.

# PHP 7
$country = NULL;

if($session !== NULL) {
    $user = $session->user;

    if($user !== NULL) {
        $address = $user->getAddress();

        if ($address !== NULL) {
            $country = $address->country;
        }
    }
}

# PHP 8
$country = $session?->user?->getAddress()?->country;

Match Ausdrücke & Vergleiche

Häufig verwendete switch/case-Ausdrücke vergleichen nicht strikt, sodass eine Zahl genauso ein String sein kann, wenn sie denn gleichwertig aussieht. Der neue Match Ausdruck vergleicht hierbei strikt, hat auch eine andere Syntax bei der Zuweisung und ermöglicht damit eine kompaktere Schreibweise. Ein break; ist ebenfalls nicht erforderlich.

# PHP 7
switch (8.0) {
    case '8.0':
        $result = 'Vergleich als String';
    break;
    case 8.0:
        $result = 'Treffer, da strikter Vergleich!';
    break;
}
// $result wird zu: 
// Vergleich als String

# PHP 8
$result = match (8.0) {
    '8.0' => 'Vergleich als String',
     8.0  => 'Treffer, da strikter Vergleich!',
};
// $result wird zu: 
// Treffer, da strikter Vergleich!

Vergleiche sind nun etwas offensichtlicher im Verhalten. So führt der Vergleich mit 0 oder 1 nicht immer zum erwarteten Ergebnis, falls dieser nicht strikt durchgeführt wird. So werden Zahlen nun wie gewöhnlich mit numerischen Strings verglichen, andernfalls wird die Zahl zu einem String konvertiert und ein String-Vergleich durchgeführt. Das Ergebnis ist somit ein anderes.

# PHP 7
if(0 == 'foobar') // führt zu true        

# PHP 8
if(0 == 'foobar') // führt zu false

PHP 8 kann im Kundenmenü unter https://my.bplaced.net/php aktiviert werden. Da diese Version noch recht neu ist, haben wir uns im Interesse der Kompatibilität noch nicht dazu entschieden, diese Version zum Standard zu erklären, sodass PHP 7.4 weiterhin automatisch ausgewählt bleibt. Den Wechsel zu PHP 8 für neue Konten streben wir zum Frühlingsbeginn 2021 an.

Abonnieren
E-Mail senden für
guest
1 Comment
Älteste Kommentare
Neuste Kommentare
Inline Feedbacks
View all comments
Leo
Leo
2 months ago

Ich bin gespannt!!!

1
0
Would love your thoughts, please comment.x
()
x