PHP 8.0 disponible : de grosses améliorations pour le langage

PHP 8.0 disponible : de grosses améliorations pour le langage

PHP 8.0 disponible : de grosses améliorations pour le langage

La nouvelle version de PHP est clairement majeure. Les nouveautés y sont particulièrement nombreuses, et beaucoup sont importantes.

Par exemple, PHP 8.0 propose des nouveaux compilateurs JIT (Just In Time, compilation à la volée). L’un des deux, Tracing JIT, se veut particulièrement prometteur, avec « environ trois fois plus de performances sur des benchmarks synthétiques et 1,5 à 2 fois plus de performances sur certaines applications à longue durée d'exécution ».

Parmi les autres améliorations, on note : 

  • Les arguments nommés (on ne spécifie que les paramètres requis), indépendants et auto-documentés
  • Des métadonnées structurées avec la syntaxe PHP pour les attributs
  • La promotion des propriétés des constructeurs
  • Les types d’unions, permettant d’utiliser les déclarations de types d’union native, validées à l’exécution
  • L’expression Match, qui réalise des comparaisons strictes, le résultat pouvant être enregistré dans une variable ou retourné
  • Nullsafe, opérateur autorisant les chaines d’appels à la place des vérifications conditionnelles de null. Si l’un des éléments échoue, l’exécution de la chaine est coupée et cette dernière équivaut à null.
  • Une majorité de fonctions internes renvoient une exception Error si la validation du paramètre échoue
  • Une vérification de type plus sévère pour les opérateurs arithmétiques et bit à bit
  • La possibilité de créer des héritages avec les méthodes privées
  • Un nouveau type mixed
  • Les virgules trainantes sont autorisées dans les listes de paramètres et listes des use d'une fermeture
  • L’ajout de catchs non capturants
  • La possibilité d’utiliser ::class sur les objets

La liste complète des nouveautés peut être consultée depuis l’annonce officielle.

Commentaires (15)


Que du bon !
Et certains iront encore dire que faire du PHP en 2020 c’est être has been :D



Le langage évolue dans le bon sens, même si les débats ont été pas mal animé sur certaines RFC de la 8.0.


J’ai souvenir d’un tweet où quelqu’un de Hey, le service mail de Basecamp, détaillait leur stack technique.
On aurait pu s’attendre à de la techno bleeding edge, du node, du graphql, de la jamstack dans tous les sens, et au final c’était sql, php, html, css et un peu de JS :mdr:


Hâte de migrer notre codebase en Php 8 ^^



Il y a des ajouts majeurs vraiment intéressants :)


Pour quelqu’un qui n’a pas fait de php depuis 10 ans, j’avoue, ça donnerait presque envie de réessayer.
Au final ça va toujours dans le sens d’une convergence entre tous les langages*.



[*: à part go]


Entre les langages qui font le web surtout. Mais chacun garde quand même ses spécificités et ses qualités (et défauts). La convergence, s’il y en a une, est surtout au niveau de certaines syntaxes (les langages s’inspirent les uns des autres) :)



Le Nullsafe est clairement inspiré de Typescript par exemple.



Y a pas moyen de forcer la version avec leur fichier de config à la racine du FTP pour la 7.4 ?


Furanku

Entre les langages qui font le web surtout. Mais chacun garde quand même ses spécificités et ses qualités (et défauts). La convergence, s’il y en a une, est surtout au niveau de certaines syntaxes (les langages s’inspirent les uns des autres) :)



Le Nullsafe est clairement inspiré de Typescript par exemple.



Y a pas moyen de forcer la version avec leur fichier de config à la racine du FTP pour la 7.4 ?


Le nullsafe s’est aussi vu dans des languages backend comme kotlin, c#, ruby etc., avant que ça n’apparaisse dans TypeScript. Et on pourrait même dire que le concept derrière cette syntaxe vient de languages fonctionnels comme haskell (la monade “maybe”). Du coup non je ne trouve pas que ce soit surtout les langages du web qui convergent 🙃
(Je parle bien purement du langage, pas de leur application au runtime)


jotak

Le nullsafe s’est aussi vu dans des languages backend comme kotlin, c#, ruby etc., avant que ça n’apparaisse dans TypeScript. Et on pourrait même dire que le concept derrière cette syntaxe vient de languages fonctionnels comme haskell (la monade “maybe”). Du coup non je ne trouve pas que ce soit surtout les langages du web qui convergent 🙃
(Je parle bien purement du langage, pas de leur application au runtime)


Kotlin a une séparation stricte en type nullable et non-nullable. C’est bien plus avancé que là où ça semble être juste un opérateur


jotak

Le nullsafe s’est aussi vu dans des languages backend comme kotlin, c#, ruby etc., avant que ça n’apparaisse dans TypeScript. Et on pourrait même dire que le concept derrière cette syntaxe vient de languages fonctionnels comme haskell (la monade “maybe”). Du coup non je ne trouve pas que ce soit surtout les langages du web qui convergent 🙃
(Je parle bien purement du langage, pas de leur application au runtime)


Sur ces langages là je ne peux pas dire donc je te crois volontiers 😁


Furanku

Entre les langages qui font le web surtout. Mais chacun garde quand même ses spécificités et ses qualités (et défauts). La convergence, s’il y en a une, est surtout au niveau de certaines syntaxes (les langages s’inspirent les uns des autres) :)



Le Nullsafe est clairement inspiré de Typescript par exemple.



Y a pas moyen de forcer la version avec leur fichier de config à la racine du FTP pour la 7.4 ?


Si on a pas de tâches cron on peut, mais sinon ça les fait planter. (forcer la 7.4 sur ovh)


Dommage qu’OVH n’est déjà pas passé à PHP 7.4, alors il faudra attendre 10 ans pour qu’OVH installe la version 8 sur les serveurs mutualisés… typique du made in france…


y’a desq incompatibilités entre 7.4 et 8.0 ou je peux upgrade à la rache les yeux fermés?



Albirew a dit:


y’a desq incompatibilités entre 7.4 et 8.0 ou je peux upgrade à la rache les yeux fermés?




:mdr2: :mdr2: pas moyen



Furanku a dit:


certains iront encore dire que faire du PHP en 2020 c’est être has been :D




A peu près tous les devis js/ts.
Et ils ont raison :fumer:


En fait, ceux qui subissent le javascript-bashing compensent avec du php-bashing, c’est ça ? 🤔 😅


Je fais du PHP et je dois avouer que je n’ai pas tout compris, est-ce que vous avez des exemples plus concrets svp ?


Fermer