PHP 8: Alles, was Sie über das neue Update wissen müssen

PHP 8

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.

Index
  1. Wann wird PHP 8 veröffentlicht?
  2. Wird es Komplikationen mit den alten Codes geben?
  3. Neue Funktionen in PHP 8
    1. JIT-Compiler
    2. Die JSON-Erweiterung ist immer aktiv
    3. Unionstypen
    4. Statischer Rückgabetyp
    5. Schwache Karten
    6. Verwenden Sie :: class für Objekte
    7. Verkettbare Schnittstelle
    8. Konvertieren Sie DateTime
    9. fdiv
    10. Geben Sie Anmerkungen ein
    11. Tippfehler
    12. Neu klassifizierte Motorwarnungen
    13. Standard-Fehlerberichterstattungsstufe
    14. @ unterdrückt keine schwerwiegenden Fehler mehr
    15. Reihenfolge der Verkettungsoperatoren
    16. 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.

Sie können jetzt PHP 8 ausprobieren!

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.

Versuchen Sie PHP 8 unter IONOS
Bitte wechseln Sie in Ihrem IONOS-Kundenkonto zu PHP 8, um es zu testen.

Erledigt

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.

See also  Flattern: Einführung in das plattformübergreifende Framework

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.

Hinweis

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% .

See also  UML-Zustandsdiagramm: Visualisieren Sie Sequenzen von Objektzuständen

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.

See also  Analysefehler: Beim Parsen des Pakets ist ein Fehler aufgetreten.

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.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *