PHP 8 jetzt bei hosting.de verfügbar

PHP 8 jetzt bei hosting.de verfügbar

PHP ist wohl die bekannteste und meist verbreitetste Programmiersprache, die für Webseiten und Webhosting verwendet wird. Sie ist leicht zu erlernen und durch ihre weite Verbreitung gibt es auch für Anfänger viele Anleitungen und Tutorials, die den Einstieg in die Sprache erleichtern. Mit jeder neuen Version kitzeln die PHP Entwickler Geschwindigkeit heraus. Das ist insbesondere bei den letzten beiden großen Versionssprüngen PHP 7 und PHP 8 der Fall.

Bei hosting.de kann ab sofort für jede Domain auch PHP 8 genutzt werden. Im Folgenden wollen wir daher auf die wichtigsten Neuerungen von PHP 8 eingehen. Bitte beachtet, dass es zu PHP 7 auch einige Inkompatibilitäten gibt. Dinge, die in PHP 7 als deprecated markiert waren, sind aus PHP 8 rausgeflogen oder werden dort anders umgesetzt. Es wird also eine Weile dauern, bis Softwares wie Wordpress, Joomla oder TYPO3 vollständig mit PHP 8 kompatibel werden. Software, die für PHP 7 entwickelt wurde, muss also unter Umständen angepasst werden.

Mit der Veröffentlichung von PHP 8 werden auch einige ältere PHP Versionen nicht mehr länger von den PHP Entwicklern unterstützt. Das hat zur Folge, dass es für diese älteren Versionen keine Sicherheitsupdates mehr gibt. Wir empfehlen daher grundsätzlich, nur PHP Versionen zu nutzen, deren Sicherheitssupport von den PHP Entwicklern nicht abgekündigt sind.

Zur Zeit ist PHP 7.3 die älteste PHP Version, die noch von den PHP Entwicklern unterstützt wird.

Kommen wir zu den wichtigen Neuerungen, die PHP 8 mitbringt:

JIT Compiler

Bisher wurde PHP Code immer Zeile für Zeile interpretiert. Das heißt, dass PHP Code jedesmal neu vom Server berechnet und ausgeführt werden musste. Der JIT Compiler sorgt dafür, dass Teile des PHP Codes in kompilierter Form gecached werden. Das soll die Geschwindigkeit von Webseiten stark verbessern. Durch den JIT Compiler sollen viele Programme fast doppelt so schnell laufen wie mit PHP 7.

Das kommt natürlich hauptsächlich darauf an, wie die in PHP geschriebene Software arbeitet und ob Teile davon vorkompiliert werden können. Für die meisten Seiten wird es zwar einen Geschwindigkeitszuwachs geben, der aber wohl eher weniger stark ausgeprägt ist. Dennoch kann man auf Steigerungen zwischen 10 und 50% hoffen.

Union Types

Union Types bezeichnet einen Verbund aus mehreren Typen. In anderen Sprachen wie C++ sind solche Typen bereits bekannt. Ursprünglich war PHP typenlos, eine Variable konnte mal eine Zahl, mal ein Buchstabe oder mal ein Bool sein. In späteren PHP Versionen konnte man dann definieren, dass eine Variable immer von einem Typ ist. Durch Union Types ist es möglich, dass eine Variable nicht mehr nur ein Typ sein kann, sondern mehrere. So ist es bspw. möglich, zu definieren, dass eine Funktion einen Integer oder einen Float-Wert als Parameter annimmt oder als Rückgabe liefert:

public function foo(int|float $bar): int|float;

Lediglich der Typ void kann nicht Teil einer Union sein, da er keine Rückgabe liefert. Soll ein Typ nullable sein, also keinen Wert enthalten, kann das mit einem Fragezeichen deklariert werden:

public function foo(?int $foo): int|float;

static

PHP 8 unterstützt nun static als Return Type. Neben parent und self kann somit ebenfalls static als Rückgabewert genutzt werden.

::class Methode bei Objekten

Um den Namen einer Klasse in PHP herauszubekommen, musste bisher die get_class() Methode verwendet werden. Seit PHP 8 haben Objekte eine eigene ::class() Methode. Das macht den PHP Code lesbarer.

neue str_contains() Funktion

Der Umweg über strpos(), um herauszufinden, ob ein String in einem anderen vorkommt, kann durch die neue Funktion str_contains() vereinfacht werden.

Statt

if (strpos('hosting.de', 'de') !== false) { ... }

kann jetzt

if (str_contains('hosting.de', 'de') { ... }

verwendet werden. Das fördert die Lesbarkeit des PHP Codes.

fdiv()-Funktion

Mit der fdiv() Funktion wird Division von Gleitkommazahlen nach IEEE 754 implementiert. Hierbei darf man als Sonderfall durch 0 dividieren. Als Rückgabe erhält man jetzt entweder das Ergebnis oder INF, -INF bzw. NAN. Beispiel:

var_dump(fdiv(5.7, 1.3)); // float(4.384615384615385)
var_dump(fdiv(4, 2)); // float(2)
var_dump(fdiv(1.0, 0.0)); // float(INF)
var_dump(fdiv(-1.0, 0.0)); // float(-INF)
var_dump(fdiv(0.0, 0.0)); // float(NAN)

@ unterdrückt Ausgaben von fatalen Fehler nicht mehr

Durch ein @ vor einem Funktionsaufruf konnte man die Ausgabe des Fehlers verhindern. Das funktioniert nun nicht mehr bei fatalen Fehlern. Es wird empfohlen, auf Seiten, die live geschaltet sind, display_errors auf off zu stellen. Bei hosting.de ist das die Standardeinstellung.

Weitere Informationen

Daneben gibt es viele weitere Änderungen. Weitere Informationen zu PHP findet Ihr auch direkt bei PHP.net: https://www.php.net/releases/8.0/de.php

Hinweise, was man bei der Umstellung von PHP 7 auf PHP 8 beachten muss, liefert folgende Seite: https://www.php.net/manual/en/migration80.php
Hier werden noch einmal alle Breaking Changes sowie abgekündigten Features (deprecated) aufgelistet.

Next: DSGVO-konformen Datei-Briefkasten in Nextcloud erstellen hosting.de Blog 19.01.2021