Wann wird PHP8 veröffentlicht? PHP-Entwickler freuen sich sehr darauf. Am 25. Juni 2020 veröffentlichte das PHP-Team die erste Testversion Alpha1 (PHP 8.0.0), die den offiziellen Start des PHP8-Release-Zyklus einläutet!
Die offizielle Ankündigung der ersten Version von PHP 8.0.0 lautet wie folgt:
PHP 8 Alpha-Version veröffentlicht, Download-Adresse:
https://www.php.net/archive/2020.php
PHP 8 ist eine neue Hauptversion, die einige wichtige Änderungen sowie viele neue Funktionen und Leistungsverbesserungen einführt:
JIT, Just-In-Time, Just-in-Time-Kompilierung
Die Funktion, die allen am meisten am Herzen liegt, ist JIT. Diese Funktion befindet sich seit vielen Jahren in der Entwicklung und hat die Hauptversionsreihe von PHP 5 und 7 überlebt (das PHP 6-Projekt wurde erst im März letzten Jahres abgebrochen, als durch eine Abstimmung endgültig bestätigt wurde, dass sie in PHP 8 integriert werden würde). .
JIT ist eine Compiler-Strategie (Referenzartikel: Was ist PHP JIT? PHP8 neue Feature-JIT-Grafik und Texterklärung ), die den Code als Zwischenzustand ausdrückt, der beim Ausführen ausgeführt wird Es wird in architekturabhängigen Maschinencode umgewandelt und im laufenden Betrieb ausgeführt. In PHP bedeutet dies, dass die JIT von Zend VM generierte Anweisungen als Zwischendarstellungen behandelt und sie in architekturabhängigem Maschinencode ausführt, was bedeutet, dass nicht mehr Zend VM den Code hostet, sondern die zugrunde liegende CPU.
Obwohl die PHP-Leistung seit PHP 7.0 durch die Optimierung der Kerndatenstruktur HashTable, die Stärkung bestimmter Opcodes in Zend VM und die kontinuierliche Verbesserung der Optimizer-Komponente von OPCache erheblich verbessert wurde, scheinen diese Optimierungen tatsächlich ihr Ziel erreicht zu haben Limit. Jetzt beginnt JIT ganz unten und gilt als die beste Möglichkeit, die PHP-Leistung zu verbessern.
Für den Leistungsvergleich nach der Einführung von JIT (und die Gesamtleistung von PHP 8) können Sie sich auf den Phoronix-Benchmark-Test dieses Monats beziehen (Hinweis: Der Test wurde am Ende mit der Quellcode-Build-Version durchgeführt Mai).
Union-Typen, Union-Typen
Unterstützung für Union-Typen Empfängt mehrere Werte unterschiedlichen Typs. Es handelt sich um eine Sammlung von zwei oder mehr Typen. Bei der Verwendung können Sie einen auswählen. Die Verwendung von Union-Typen ist in Standardbibliotheken im Open-Source-Ökosystem sehr verbreitet, einschließlich der PHP-Unterstützung für Union-Typen, die die Migration von mehr Typinformationen von phpdoc in Funktionssignaturen ermöglicht. Man kann sagen, dass Union-Typen nach Generika den größten Durchbruch im aktuellen Typdeklarationssystem darstellen.
Attribute, Anmerkung
Die Attribute hier sind das Anmerkungen in anderen Sprachen bieten eine Möglichkeit, einer Klasse Metadaten hinzuzufügen, ohne den Dokumentationsblock zu analysieren.
Mehr erfahren: Neue PHP8-Funktionen: Attribute
Neue statische Rückgabe type
Obwohl es möglich ist, self zurückzugeben, ist es angesichts der Natur des dynamischen Typs von PHP effizienter, statische Rückgabetypen in PHP zu unterstützen 8. Sollte für viele Entwickler sehr nützlich sein.
WeakMap, WeakMaps
WeakMaps ermöglichen die Erstellung aus Mapping von Objekten auf beliebige Werte (ähnlich wie SplObjectStorage), ohne die Garbage Collection des als Schlüssel verwendeten Objekts zu verhindern. Solange das Objekt zur WeakMap hinzugefügt wird, kann der GC den von ihm belegten Speicher zurückfordern, wenn die Bedingung ausgelöst wird.
In PHP 7.4 wurde tatsächlich Unterstützung für WeakReference eingeführt. Rohe schwache Referenzen allein haben jedoch nur begrenzten Nutzen und schwache Zuordnungen werden in der Praxis häufiger verwendet. Da keine Funktionalität zum Registrieren von Zerstörungsrückrufen bereitgestellt wird, ist es nicht möglich, effiziente schwache Zuordnungen zusätzlich zu schwachen PHP-Referenzen zu implementieren. Ein allgemeiner Anwendungsfall für schwaches Mapping besteht darin, Daten einzelnen Objektinstanzen zuzuordnen, ohne sie zu zwingen, aktiv zu bleiben, wodurch vermieden wird, dass lang laufende Prozesse unnötig Speicher belegen.
Bezüglich WeakMap/WeakReference können Sie auf den WeakRef-Teil dieses Artikels verweisen. Obwohl es um JS geht, sind die Prinzipien dieselben:
https :/ /www.html.cn/web/javascript/19449.html
Weitere verwandte Funktionen finden Sie unter:
Darüber hinaus sind mir auch mehrere Funktionen aufgefallen, die sich in der Abstimmungsphase befinden (d. h. sie könnten bald in eine bestimmte Version integriert werden), wie z. B. Match-Ausdruck (Match-Ausdruck) und die Verwendung von @ @ oder #[] anstelle von < ;>s Vorschläge verdienen Aufmerksamkeit:
Es sollte beachtet werden, dass es sich bei PHP 8 um eine große Update-Version mit einigen größeren Änderungen handelt, daher ist es am besten, die UPGRADING-Dokumentation auf verwandte Themen zu prüfen. In Wirklichkeit wurden viele dieser bahnbrechenden Änderungen jedoch bereits in früheren 7.*-Versionen eingeführt. Wenn Sie also auf dem neuesten Stand sind, wird ein Upgrade auf PHP 8 keine großen Auswirkungen haben.
Der Erfolg von PHP 8 ist das zweite JAVA, und eine große Anzahl von Entwicklern aus anderen Sprachen wird in das PHP-Lager zurückkehren! Es geht schließlich schnell und einfach! Freuen wir uns gemeinsam darauf!
[Verwandte Empfehlungen]