Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    PHP 8 : voici un aperçu des nouveautés attendues dans la prochaine version majeure du langage
    PHP 8 : voici un aperçu des nouveautés attendues dans la prochaine version majeure du langage,
    selon un développeur PHP

    L’année 2020 s’annonce très importante pour le langage PHP. PHP 7.4 a été publié en décembre dernier et l’équipe de développement du langage travaille déjà sur PHP 8, la prochaine version majeure. Pour la nouvelle version, beaucoup de choses devraient changer ou bien subir des améliorations et de nombreuses nouvelles fonctionnalités sont également attendues. Ces dernières comprennent le compilateur JIT (Just In Time) et les types union. PHP 8 devrait être publié vers la fin de l’année.

    L'introduction d'un compilateur JIT dans PHP 8 a été proposée en avril 2019. Le but est d’améliorer les performances du langage en matière de vitesse. D’autres améliorations significatives de performances sont citées, bien que pas toujours dans le contexte des requêtes Web. L’on estime qu’il n'y a pas encore eu d'évaluation précise des performances à ce stade, mais elles viendront certainement. En gros, JIT est une technique qui permettra de compiler des parties du code au moment de l'exécution, de sorte que la version compilée puisse être utilisée à la place.


    Selon Christian Brent, un programmeur PHP, la prochaine version majeure du langage apporte bien plus qu’un compilateur JIT. Voici, selon Brent, un petit aperçu de ce qui est prévu dans PHP 8 :

    Les types Union

    Les types Union peuvent être utiles dans plusieurs cas. Les types Union sont une collection de deux ou plusieurs types qui indiquent que l'un ou l'autre peut être utilisé. Cependant, le type “void” ne peut pas faire partie d'un type Union, puisqu'il n’indique aucune valeur de retour. De plus, les unions annulables peuvent être écrites en utilisant | null, ou en utilisant la notation “?”.

    Type de retour static

    Il est déjà possible de retourner le type self. À partir de PHP 8, le type static devrait aussi devenir un type de retour valide. Étant donné la nature dynamique de PHP, cette fonctionnalité pourrait bien être utile à de nombreux développeurs.

    Les Weakmaps

    Cette fonctionnalité est basée sur la RFC Weakrefs qui a été ajoutée dans PHP 7.4. Les WeakMaps contiennent des références à des objets, ce qui n'empêche pas ces objets d'être collectés comme des ordures. Prenons l'exemple des ORM. Ils implémentent souvent des caches qui contiennent des références à des classes d'entités afin d'améliorer les performances des relations entre les entités. Ces objets d'entités ne peuvent pas être collectés, tant que ce cache contient une référence à ces objets, même si le cache est la seule chose qui les référence.

    Si cette couche de cache utilise des références et des WeakMaps à la place, PHP peut mettre ces objets à la poubelle lorsque plus rien d'autre ne les référencera. Puisque les ORM peuvent gérer plusieurs centaines, voire milliers d'entités dans une requête, les WeakMaps offrent une façon, plus respectueuse des ressources, de traiter ces objets.

    La fonction fdiv

    PHP 8 devrait introduire une nouvelle fonction fdiv. Elle fait quelque chose de semblable aux fonctions fmod et intdiv, qui permettent une division par 0. Au lieu d'erreurs, vous obtiendrez INF, -INF ou NAN, selon le cas.

    Les erreurs de type cohérentes

    Les fonctions définies par l'utilisateur déclenchent des erreurs dans PHP, mais les fonctions internes ne le font pas. Elles émettent plutôt des avertissements et renvoient un message nul. Avec PHP 8, le comportement des fonctions internes a été rendu cohérent.

    Créer des objets DateTime à partir de l'interface

    Les récentes versions de PHP permettent déjà de créer un objet DateTime à partir d'un objet DateTimeImmutable, mais l'inverse était très délicat. Il existe désormais un moyen généralisé de convertir les objets DateTime et DateTimeImmutable l'un vers l'autre.

    Les avertissements seront revus dans PHP 8

    Beaucoup d'erreurs PHP déclenchaient seulement des avertissements ou des avis. À partir de PHP 8, elles seront converties en erreurs correctes. Les avertissements suivants ont été modifiés :

    • variable indéfinie : déclenche une erreur d'exception au lieu d'un avis ;
    • indice de tableau indéfini : déclenche un avertissement au lieu d'avis ;
    • Tentative d'incrémentation/diminution de la propriété “%s” d’un non-objet : déclenche une erreur d’exception au lieu d’un avertissement ;
    • tentative de modification de la propriété “%s” d’un non-objet : déclenche une erreur d’exception au lieu d'avertissement ;
    • tentative d'attribution de propriété “%s” d’un non-objet : déclenche une erreur d’exception au lieu d'un avertissement ;
    • création d'un objet par défaut à partir d'une valeur vide : déclenche une erreur d’exception au lieu d'un avertissement ;
    • impossible d'ajouter un élément au tableau, car l'élément suivant est déjà occupé : déclenche une erreur d’exception au lieu d'un avertissement ;
    • ne peut pas annuler le décalage d'une variable qui n'est pas un tableau : déclenche une erreur d’exception au lieu d'un avertissement ;
    • ne peut pas utiliser une valeur scalaire comme tableau : déclenche une erreur d’exception au lieu d'un avertissement ;
    • etc.


    En outre, une petite nouveauté utile qui pourrait aussi arrivé dans PHP 8 : il est désormais possible d'utiliser ::class sur les objets, au lieu de devoir utiliser get_class(). Cela fonctionne de la même manière que get_class(). Par ailleurs, PHP 8 est une version majeure, ce qui signifie qu’il pourrait y avoir des changements radicaux. La meilleure chose à faire est de s’informer de la liste complète des changements dans PHP 8 au fur et à mesure que son développement évolue. Toutefois, si vous avez été à jour au fil des ans, il ne devrait pas être très difficile de passer à PHP 8.

    Source : Christian Brent

    Et vous ?

    Qu'en pensez-vous ?

    Voir aussi

    PHP 7.4 devrait être rendu disponible vers la fin de cette année. Voici un aperçu des nouveautés qui pourraient y figurer

    PHP 8 va proposer un compilateur Just In Time qui devrait produire une amélioration des performances en vitesse

    PHP 7.2 est disponible en version stable avec la bibliothèque de cryptographie Sodium et d'autres améliorations et nouvelles fonctionnalités
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre expérimenté
    Très curieux de voir l'impact effectif des weakmaps sur l'utilisation mémoire en général.

    J'aime également beaucoup le travail sur la cohérence qui a commencé avec PHP7, peut être que nous aurons un jour une syntaxe (camel case vs snake case, singulier vs pluriel) et un ordre de paramètres (needle et haystack c'est au petit bonheur la chance actuellement) stable.

  3. #3
    Membre expert
    Citation Envoyé par Mrsky Voir le message
    Très curieux de voir l'impact effectif des weakmaps sur l'utilisation mémoire en général.

    J'aime également beaucoup le travail sur la cohérence qui a commencé avec PHP7, peut être que nous aurons un jour une syntaxe (camel case vs snake case, singulier vs pluriel) et un ordre de paramètres (needle et haystack c'est au petit bonheur la chance actuellement) stable.
    J'ai l'impression que ce qui est objet est en « camel case » et ce qui est en « procédural » est snake case. Mais je me trompe peut-être.

    C'est vrai que pour les ordres des paramètres, ça fait parfois un peu amateur.

    Pour le reste, je trouve que depuis PHP 7, c'est devenu de plus en plus agréable à utiliser (ce n'est pas que ça me déplaisait avant non plus, mais c'est mieux maintenant).

  4. #4
    Membre averti
    PHP a sacrément évolué depuis le temps. Que de chemins parcouru...

  5. #5
    Futur Membre du Club
    test php8
    Tenez nosu au courant, on fera un benchmark public !

  6. #6
    Membre du Club
    J'aime également beaucoup le travail sur la cohérence qui a commencé avec PHP7, peut être que nous aurons un jour une syntaxe (camel case vs snake case, singulier vs pluriel) et un ordre de paramètres (needle et haystack c'est au petit bonheur la chance actuellement) stable.
    Ça a déjà été proposé à mainte reprises et je ne penses pas que ça arrivera !
    La "seule" choses qu'on peut espéré est l'ajout de méthode au type scalaire (genre "hello"->length() etc ...)


    Tenez nosu au courant, on fera un benchmark public !
    Il existe déjà une plateforme qui fait des benchmark publique : http://www.phpbenchmarks.com/fr/ (bon ils doivent encore fournir PHP 7.4 mais l'intention y est ! )

  7. #7
    Membre expérimenté
    C'était complètement impensable avant php7 de standardiser l'ordre des paramètres, et aujourd'hui encore je doute que ce soit faisable.

    Mais a force de dépréciations et de temps on y viendra peut être. Après c'est un peu chiant mais rien d'insurmontable non plus.

  8. #8
    Membre actif
    Citation Envoyé par Cryde Voir le message
    La "seule" choses qu'on peut espéré est l'ajout de méthode au type scalaire (genre "hello"->length() etc ...)
    J'espère aussi

  9. #9
    Membre habitué
    ... ces objets d'être collectés comme des ordures ...
    Les pauvres. #GoogleTranslate
    Si un développeur ne trouve pas au moins une chose gênante dans son code 6 mois après l'avoir écrit, cela signifie qu'il en est au même niveau qu'il y a 6 mois.

  10. #10
    Futur Membre du Club
    Encore une mise à jour de PHP...?
    Encore une mise à jours de PHP ? A quand une MàJ mensuelle ?
    Vous pensez à tous ceux qui sont obligés (je parle des nombreuses petites entreprises qui ont fait développé leurs site en PHP) et qui doivent se coltiner les mises à jour coûteuses pour que leur site continuent à fonctionner ?
    Ils font joujous ces mecs la ?

  11. #11
    Modérateur

    @marech_jean

    si tu regardes bien, des mises à jour de PHP il y'en a très régulièrement.
    Le passage à une nouvelle version PHP 5 → PHP 7 → PHP 8, c'est beaucoup plus long : PHP 7 (2015-12) → PHP 8 (2021-09 annoncé).
    Il faut reconnaître que cela laisse le temps de voir venir.
    Sans compter que pleins d'hébergeurs font tourner plusieurs versions de PHP en parallèle (de la plus récente à celles qui ne sont même plus supportées)
    Donc question préjudice, c'est assez limité, non ?

  12. #12
    Futur Membre du Club
    Pas si simple que ça! D’abord les hébergeurs (dans mon cas Ionos) font désormais payer (cher) le maintien des anciennes versions. Dans notre cas, notre site en 7.1 à déjà des problèmes pour migrer vers le 7.2. Les modifications effectuées manuellement par nos développeurs ont générés des sources d'erreurs.
    On imagine déjà ce qui va se passer quand il faudra passer à la version 8 ! et ainsi de suite...Une belle machine à cash pour les hébergeurs.

  13. #13
    Modérateur

    bah je me suis fait une mise à jour de 7.1 vers la 7.3 et sincèrement c'est quand même vachement compatible. Y a 2 ou 3 pétouilles à revoir mais globalement si le code n'a pas été pondu par un goret, c'est largement jouable.
    Là j'entame une mise à jour d'un site de PHP 5.6 vers 7.4 et là par contre, c'est autrement plus ardu, faut dire que la branche 5.6 a 6 ans ! Et puis le site tournait à la base sur une version 5.3 qui elle a 11 ans !
    Avec ces paramètres, c'est plus qu'une simple migration vu les reprises de pavés de code à faire entre les dépréciations, les suppressions, les nouvelles structures de langage... Mais bon cela faisait 6 ans que rien n'avait été fait dessus (quand ça fonctionne, on ne touche pas ).

    Au fait le support prolongé chez ionos se chiffre à combien par mois ?

  14. #14
    Futur Membre du Club
    entre 9 et 10 € / mois

  15. #15
    Membre habitué
    Encore une mise à jours de PHP ? A quand une MàJ mensuelle ?
    Vous pensez à tous ceux qui sont obligés (je parle des nombreuses petites entreprises qui ont fait développé leurs site en PHP) et qui doivent se coltiner les mises à jour coûteuses pour que leur site continuent à fonctionner ?
    Ils font joujou ces mecs la ?
    C'est pas faux mais d'un autre coté si le langage n'évolue pas quel sera son avenir ?
    Il aurai bien fait d'allonger le support sécu de 5.6, j'héberge beaucoup de sites dont c'est la version max.

  16. #16
    Membre à l'essai
    Encouragement de l'equipe de developpement
    Selon moi la nouvelle version de php nous donnera plus de posibilite de pouvoir faire de script sans faille securite dans le developpement avec l'integration du nouveu compilateur est vraiiment genial.J'encourage l'equipe a vraiment mettre a notre disposition le plus rapide cette version.