Quand sortira php8 ? Les développeurs PHP l'attendent avec impatience. Le 25 juin 2020, l'équipe PHP a publié la première version de test Alpha1 (PHP 8.0.0), qui annonce le lancement officiel du cycle de release PHP8 !
L'annonce officielle de la sortie de la première version de PHP 8.0.0 est la suivante :
Version PHP 8 Alpha publiée, adresse de téléchargement :
https://www.php.net/archive/2020.php
PHP 8 est une nouvelle version majeure qui introduit des changements majeurs, ainsi que de nombreuses nouvelles fonctionnalités et améliorations de performances :
JIT, Just-In-Time, compilation juste à temps
La fonctionnalité qui préoccupe le plus tout le monde est JIT. Cette fonctionnalité est en développement depuis de nombreuses années et a survécu aux grandes séries de versions de PHP 5 et 7 (le projet PHP 6 a été avorté ce n'est qu'en mars de l'année dernière qu'il a finalement été confirmé par un vote qu'elle entrerait dans PHP 8). .
JIT est une stratégie de compilateur (article de référence : Qu'est-ce que PHP JIT ? Explication graphique détaillée de JIT, la nouvelle fonctionnalité de PHP8 ), qui exprime le code comme un état intermédiaire. converti en code machine dépendant de l'architecture et exécuté à la volée. En PHP, cela signifie que le JIT traite les instructions générées par Zend VM comme des représentations intermédiaires et les exécute dans du code machine dépendant de l'architecture. C'est-à-dire que ce n'est plus Zend VM qui héberge le code, mais le CPU sous-jacent.
Bien que les performances de PHP aient été considérablement améliorées depuis PHP 7.0 en optimisant la structure de données de base HashTable, en renforçant certains opcodes dans Zend VM et en améliorant continuellement le composant Optimizer d'OPCache, en fait ces optimisations Il semble avoir atteint son limite. Désormais, JIT commence par le bas et est considéré comme le meilleur moyen d'améliorer les performances de PHP.
Pour la comparaison des performances après l'introduction de JIT (et des performances globales de PHP 8), vous pouvez vous référer au test de référence Phoronix de ce mois-ci (remarque : le test a été effectué en utilisant la version de build du code source à la fin du mois de mai).
Types d'union, types d'union
Prise en charge des types d'union Reçoit plusieurs valeurs de types différents. Il s'agit d'une collection de deux types ou plus. Vous pouvez en choisir un lorsque vous l'utilisez. L'utilisation de types d'union est très courante dans les bibliothèques standard de l'écosystème open source, y compris la prise en charge par PHP des types d'union permettra de migrer davantage d'informations de type de phpdoc vers les signatures de fonction. On peut dire qu'après les génériques, les types d'union constituent la plus grande avancée dans le système actuel de déclaration de type.
Attributs, annotation
Les attributs ici sont ceux is Les annotations dans d'autres langages fournissent un moyen d'ajouter des métadonnées à une classe sans analyser le bloc de documentation.
En savoir plus : Nouvelles fonctionnalités PHP8 : Attributs
Nouveau retour statique tapez
Bien qu'il soit possible de retourner soi-même, compte tenu de la nature du type dynamique de PHP, il sera plus efficace de prendre en charge les types de retour statiques en PHP 8. Devrait être très utile à de nombreux développeurs.
WeakMap, WeakMaps
WeakMaps permettent la création à partir de Mapping d'objets à des valeurs arbitraires (similaires à SplObjectStorage) sans empêcher le garbage collection de l'objet utilisé comme clé. Tant que l'objet est ajouté au WeakMap, le GC peut récupérer la mémoire qu'il occupe lorsque la condition est déclenchée.
Dans PHP 7.4, le support de WeakReference a en fait été introduit. Cependant, les références faibles brutes en elles-mêmes ont une utilité limitée, et les mappages faibles sont plus couramment utilisés dans la pratique. Puisqu'aucune fonctionnalité n'est fournie pour enregistrer les rappels de destruction, il n'est pas possible d'implémenter des mappages faibles efficaces au-dessus des références faibles PHP. Un cas d'utilisation général du mappage faible consiste à associer des données à des instances d'objet individuelles sans les forcer à rester actives, évitant ainsi que des processus de longue durée n'occupent inutilement la mémoire.
Concernant WeakMap/WeakReference, vous pouvez vous référer à la partie WeakRef de cet article Bien qu'il s'agisse de JS, les principes sont les mêmes :
https. :/ /www.html.cn/web/javascript/19449.html
Pour plus de fonctionnalités connexes, vous pouvez consulter :
De plus, j'ai également remarqué plusieurs fonctionnalités qui sont en phase de vote (c'est-à-dire qu'elles pourraient bientôt être intégrées dans une certaine version), telles que l'expression de correspondance (match expression) et l'utilisation de @ @ ou #[] au lieu de < ;> les propositions méritent attention :
Il convient de noter que PHP 8 est une version de mise à jour majeure avec quelques changements majeurs, il est donc préférable de consulter la documentation UPGRADING pour les questions connexes. En réalité, cependant, bon nombre de ces modifications majeures ont déjà été introduites dans les versions 7.* précédentes, donc si vous vous tenez au courant, la mise à niveau vers PHP 8 n'aura pas beaucoup d'impact.
Le succès de PHP 8 est le deuxième JAVA, et un grand nombre de développeurs d'autres langages reviendront dans le camp PHP ! Après tout, c’est simple et rapide ! Attendons-le ensemble !
[Recommandations associées]