PHP 8: Alles, was Sie über das neue Update wissen müssen
PHP ist eine der am einfachsten zu erlernenden Programmiersprachen. Mit einem guten PHP-Tutorial und viel Motivation können Sie in wenigen Stunden Ihre ersten Skripte schreiben und Befehle ausführen. Die aktuelle Version, PHP 7, brachte bereits eine großartige Geschwindigkeitsoptimierung mit sich, die ihr Ansehen erhöhte. Version 8.0 wird ein sehr wichtiges Update für diese Open Source-Sprache sein.
Entwickler Brent Roose hat kürzlich eine Ankündigung mit den Neuerungen für die neue Version von PHP veröffentlicht. Da dieses Update noch in Arbeit ist, werden in den kommenden Monaten bis zu seiner Veröffentlichung weitere Änderungen angekündigt.
- Wann wird PHP 8 veröffentlicht?
- Wird es Komplikationen mit den alten Codes geben?
- Neue Funktionen in PHP 8
- JIT-Compiler
- Die JSON-Erweiterung ist immer aktiv
- Unionstypen
- Statischer Rückgabetyp
- Schwache Karten
- Verwenden Sie :: class für Objekte
- Verkettbare Schnittstelle
- Konvertieren Sie DateTime
- fdiv
- Geben Sie Anmerkungen ein
- Tippfehler
- Neu klassifizierte Motorwarnungen
- Standard-Fehlerberichterstattungsstufe
- @ unterdrückt keine schwerwiegenden Fehler mehr
- Reihenfolge der Verkettungsoperatoren
- Betrachtung
Wann wird PHP 8 veröffentlicht?
Nach einer langen Zeit der Unsicherheit haben die Entwickler angekündigt, dass die Veröffentlichung von PHP 8 am 26. November 2020 stattfinden wird. Dies fällt mit dem üblichen 3-Jahres-PHP-Zyklus zusammen. Außerdem wurde im Dezember 2019 PHP 7.4 veröffentlicht und PHP 7.1 eingestellt. Viele in PHP geschriebene Webseiten verwenden jedoch immer noch eine alte Version, die bald nicht mehr unterstützt wird. Wenn Sie den Webseitencode auf dem neuesten Stand halten und die neueren Versionen von PHP verwenden, kann dies einige Vorteile bringen. Die neuen Versionen bieten mehr Abwechslung, die Leistung steigt erheblich und die Sicherheitsstufe ist höher.
Wenn Sie Kunde des IONOS-Webhosting-Dienstes sind, können Sie jetzt die Beta-Version von PHP 8 ausprobieren. Noch nicht? Dann mieten Sie eines unserer günstigen Webhosting-Angebote. In Ihrem IONOS-Kundenkonto können Sie die aktuelle Version von PHP in die Beta-Version von PHP 8 ändern. Beachten Sie jedoch, dass die Verwendung der Beta-Version von PHP 8 auf Produktionssystemen nicht empfohlen wird.
Die ersten Alpha-Versionen von PHP 8 wurden bereits veröffentlicht. Dies sind jedoch nur Testversionen und sollten nicht in Online-Versionen von Webseiten oder Anwendungen verwendet werden.
Wird es Komplikationen mit den alten Codes geben?
Da PHP 8 eine Hauptversion ist, beachten Sie, dass älterer Code nicht unterstützt wird. Die meisten Änderungen, die zu Komplikationen führen könnten, waren in den Versionen 7.2, 7.3 und 7.4 bereits veraltet.
Die neuesten Änderungen umfassen:
- Der echte Typ
- Magie zitiert Vermächtnis
- array_key_exists () mit Objekten
- Filter FILTER_SANITIZE_MAGIC_QUOTES
- Reflection export () Methoden
- mb_strrpos () mit Codierung als 3. Argument
- implode () Parameterreihenfolge Mix
- Entbinden Sie $ this von nicht statischen Verschlüssen
- hebrevc () Funktion
- Funktion convert_cyr_string ()
- Funktion money_format ()
- ezmlm_hash () Funktion
- Funktion restore_include_path ()
- allow_url_include ini Direktive
Wenn Sie Ihren Code auf dem neuesten Stand gehalten haben, treten keine Probleme auf, selbst wenn das neue Update inkompatible Änderungen mit früheren Versionen aufweist . In diesem Beitrag auf GitHub finden Sie eine vollständige Liste mit allen Änderungen.
Microsoft hat angekündigt, dass Windows PHP 8 und spätere Versionen nicht unterstützt. Die PHP-Entwickler haben jedoch bereits ihre Bereitschaft mitgeteilt, dieses Problem zu beheben.
Neue Funktionen in PHP 8
Die neue Version von PHP wird voraussichtlich neue Funktionen einführen, die die Fähigkeiten von Webentwicklern erweitern werden.
JIT-Compiler
Die größte Neuheit wird der JIT-Compiler sein , der die Leistung erheblich verbessern wird. PHP wird nicht kompiliert, sondern zeilenweise interpretiert. Der JIT- Compiler ( Just in Time ) würde einen Teil des Codes zur Laufzeit kompilieren , sodass er einer zwischengespeicherten Version des Codes sehr ähnlich funktioniert. Damit sollte sich die Leistung erheblich verbessern.
Diese PHP 8-Funktion wurde bereits von Pedro Escudero sehr erfolgreich getestet. Verwendete ein einfaches Skript , um die Versionen 5.3, 7.4 und 8 (mit und ohne JIT) zu vergleichen. Zu diesem Zweck führte er das Skript in jeder Version hundert Mal aus und berechnete die durchschnittliche Zeit.
Das Ergebnis waren die folgenden Werte:
Ausführung | Zeit in Sekunden |
---|---|
5.3 | 0,64574003219604 |
7.4 | 0,10253500938416 |
8 (ohne JIT) | 0,098223924636841 |
8 (mit JIT) | 0,053637981414795 |
Obwohl der Unterschied zwischen Version 7.4 und Version 8 ohne JIT nicht sehr groß ist, ist er zwischen Version 7.4 und 8 mit JIT erheblich. Der JIT-Compiler bietet eine Leistungsverbesserung von mehr als 45% .
Die JSON-Erweiterung ist immer aktiv
In früheren Versionen der Skriptsprache konnte die JSON-Erweiterung optional deaktiviert werden. Da JSON jedoch ein sehr wichtiges Datenformat ist, haben PHP-Entwickler beschlossen, die Erweiterung immer aktiviert zu lassen. Dies sollte die Arbeit mit PHP vereinfachen.
Unionstypen
Die Typübergabe wird auch in anderen Sprachen wie C / C ++ oder Haskell-Typoskript angezeigt. Sie ermöglichen die Erstellung von Vereinigungen aus zwei oder mehr Datentypen, wobei jeder von ihnen verwendet werden kann. Im Code würde dies folgendermaßen aussehen:
public function foo(Foo|Bar $input): int|float;
Es gibt jedoch eine Einschränkung. Void kann nicht Teil eines Union-Typs sein , da es keinen Wert zurückgibt. Nullable Unions können auch mit | null oder ? Geschrieben werden . , wie wir Ihnen in diesem Beispiel zeigen:
public function foo(Foo|null $foo): void; public function bar(?Bar $bar): void;
Statischer Rückgabetyp
Statisch ist ein spezieller Klassenname und in der neuen Version ein gültiger Rückgabetyp neben self & parent.
Schwache Karten
In PHP 7.4 sind WeakRefs bereits erschienen, und jetzt wird mit WeakMaps eine Erweiterung dieser Funktion angeboten. WeakMaps und WeakRefs können nur zum Löschen von Objekten verwendet werden, wenn der Cache weiterhin auf die Feature-Classes des Objekts verweist. Dies bietet eine ressourcenschonende Objektverwaltung . Ein Beispiel aus der Dokumentation:
class FooBar { private WeakMap $cache; public function getSomethingWithCaching(object $obj) { return $this->cache[$obj] ??= $this->computeSomethingExpensive($obj); } // ... }
Verwenden Sie :: class für Objekte
In früheren Versionen mussten Sie get_class () verwenden , um Objekten eine Klasse zuzuweisen. Jetzt können Sie :: class direkt auf Objekte anwenden . Dies hilft, den Code sauberer zu halten.
Verkettbare Schnittstelle
Stringable Schnittstelle implementiert eine Schnittstelle automatisch. Bisher musste dieser Schritt manuell durchgeführt werden. Dies kann für alle Zeichenfolgen oder für Zeichenfolgen durchgeführt werden, in denen __toString () implementiert ist. Im Code würde es wie folgt lauten:
class Foo { public function __toString(): string { return 'foo'; } } function bar(Stringable $stringable) { /* ? */ } bar(new Foo()); bar('abc');
Konvertieren Sie DateTime
Mit PHP 8 wird es wesentlich einfacher, DateTime zu konvertieren . Die Entwickler haben DateTime :: createFromInterface () und DatetimeImmutable :: createFromInterface () hinzugefügt. Auf diese Weise können DateTime und DateTimeImmutable konvertiert werden von einem zum anderen.
fdiv
Mit fdiv ist eine Division durch 0 möglich. Jetzt erhalten Sie INF, -ING oder NAN als Rückgabewert.
Geben Sie Anmerkungen ein
Die neue Version enthält korrekte Typanmerkungen für alle internen Funktionen und Methoden.
Tippfehler
Bisher haben nur benutzerdefinierte Funktionen TypeErrors ausgelöst . Interne Funktionen haben eine Warnung ausgegeben und null zurückgegeben . Mit PHP 8 erzeugen interne Funktionen auch TypeErrors.
Neu klassifizierte Motorwarnungen
Bisher gab es viele Fehler, die nur eine Warnung ausgaben. Dies wird aktualisiert. Hier finden Sie eine vollständige Liste der neuen Fehlermeldungen in PHP.
Standard-Fehlerberichterstattungsstufe
Fehler, die bisher ignoriert wurden, ohne eine Warnung zu generieren, werden als E_ALL, E_NOTICE und E_DEPRECATED angezeigt. Diese Fehler waren vor Version 8 vorhanden, wurden jedoch nicht sichtbar gemeldet.
@ unterdrückt keine schwerwiegenden Fehler mehr
Diese neue Funktion hilft auch bei der Fehlererkennung. Anstatt sie wie bisher mit dem Operator @ zu unterdrücken, sollte display_errors = Off auf dem Server verwendet werden.
Reihenfolge der Verkettungsoperatoren
Diese Funktion wurde bereits in PHP 7.4 eingeführt und ist nun voll funktionsfähig. PHP reagiert jetzt intelligenter auf mehrere Operatoren. Als Beispiel zeigen wir Ihnen den folgenden Code:
Bisher hat PHP interpretiert
echo "sum: " . $a + $b;
wie
echo ("sum: " . $a) + $b;
Jetzt wird PHP 8 es als interpretieren
echo "sum: " . ($a + $b);
Betrachtung
Die Unterschriften werden ausgetauscht. Zuvor sah Reflection wie folgt aus:
ReflectionClass::newInstance($args); ReflectionFunction::invoke($args); ReflectionMethod::invoke($object, $args);
In PHP 8 wird Folgendes geschrieben:
ReflectionClass::newInstance(...$args); ReflectionFunction::invoke(...$args); ReflectionMethod::invoke($object, ...$args);
Um PHP 7 und PHP 8 gleichzeitig zu verwenden, gehen Sie wie folgt vor:
ReflectionClass::newInstance($arg = null, ...$args); ReflectionFunction::invoke($arg = null, ...$args); ReflectionMethod::invoke($object, $arg = null, ...$args);
Diese Funktionen von PHP 8 sind bereits bestätigt. In den Monaten vor dem Start werden jedoch weitere Neuigkeiten erwartet.