Les nouveautés de PHP 8 - Sortie de la version alpha 1 prévue le 25 juin 2020 !
Par Alexandre Tranchant
Le 2020-06-21 08:59:18, par Alexandre T, Membre expert
Bonjour à tous,
Nouvel article dans la rubrique PHP : Les nouveautés de PHP8 !
Comme l'article vous y invite, n'hésitez pas à donner votre avis sur :
Bref, n'hésitez pas à donner votre avis sur l'ensemble des nouveautés de PHP8.
Merci ;!
Nouvel article dans la rubrique PHP : Les nouveautés de PHP8 !
Comme l'article vous y invite, n'hésitez pas à donner votre avis sur :
- les types à choix multiples ;
- les optimisations grâce au nouveau compilateur à la volée ;
- les attributs ;
- etc.
Bref, n'hésitez pas à donner votre avis sur l'ensemble des nouveautés de PHP8.
Merci ;!
-
grunkModérateurmixed et union type : Enfin !
Qu'est ce que c'est lourd actuellement d'avoir quais la totalité du code typé correctement sauf quelques parties qui retourne des type mix.
Les weakmap j'ai du mal à voir leur intérêt en PHP . Autant dans des langages comme java ou le code vie longtemps ca a du sens , autant en php où tout disparaît une fois le code exécuté j'ai plus de mal. Jamais en PHP je me suis retrouvé dans le besoin d'une weakmap.
Pour les constructeurs promouvants , comme déjà dit ici, je suis mitigéle 22/06/2020 à 14:03 -
emilie77Membre éprouvéMerci beaucoup!le 22/06/2020 à 19:57
-
LoralinaMembre éclairéBonjour,
Oui, sauf que cette mise à jour sera accessible à tous, pas seulement à ceux qui sauront l'utiliser à bon escient.
La limite entre ce qui est abusif et ce qui ne l'est pas est floue et subjective.
Il y aura sûrement des cas intermédiaires où le choix ne sera pas évident ou que la tentation de gagner des lignes l'emportera.
Or, cette possibilité peut aboutir à une présentation disparate et peu cohérente des propriétés (dans une même classe ou d'une classe par rapport à une autre).
De plus, la réalité est souvent piégeuse :
En cours de réalisation, la conception s'affine, les besoins changent, un dysfonctionnement implique un correctif etc.
Une mise à jour simple et rapide (on n'a pas toujours le temps ni la motivation) donnera souvent un code moins joli qu'espéré, sur la forme ou le fond.
C'est à dire que certains choix initiaux paraissent inappropriés dans un deuxième temps suite à une mise à jour, mais qu'on ne peut/veut pas tout reprendre.
Cela peut tout à fait se produire avec cette nouvelle possibilité.
Après, ça reste de la forme, donc pas gravissime à priori.
Et bien sûr, on ne peut pas interdire toute nouveauté sous prétexte qu'il y aura de mauvaises utilisations.
Mais disons qu'on peut tout de même nuancer l'enthousiasme.le 25/06/2020 à 9:42 -
grunkModérateurJe comprend bien l'intérêt des références faibles dans des langages comme java ou c++ où je les utilises relativement souvent. Mais c'est parce que mon code vie longtemps, que j'ai plusieurs thread qui peuvent venir agir sur mes objets ,que je veux parfois libérer au plus vite des objets ou que je veux éviter une leak éventuelle à cause d'une référence .
Mais en PHP comme 99% du temps mon code ne vie que quelques milliseconde , je n'ai pas de réel besoin de référence faible. Au pire ca leak jusqu'à la fin de l'execution de mon script et on en parle plus.le 22/06/2020 à 17:51 -
Alexandre TMembre expertDe rien ! Ce merci fait plaisir !le 22/06/2020 à 21:41
-
Alexandre TMembre expertTu as tout-à-fait raison. La réalité est souvent piégeuse et en pratique on est vite débordé, surtout en maintenance. C'est difficile de définir le juste milieu. Pour ma part, j'utilise PHPCsFixer, PHP Mess Detector et PHP Code sniffer. J'ai défini des règles pour nos projets, on les déclare comme script dans composer et on les ajoute à nos tests d'intégration. Du coup, quand un développeur qui participe au projet ne respecte pas les consignes, cela le lui signale aussitôt. C'est un enfer à gérer sur d'anciens projets, mais sur tout nouveau projet, on le met dès le début et ça marche plutôt bien. Maintenant, va falloir que ces outils s'adaptent à la nouvelle syntaxe et aux dérives que cela peut entraîner, mais je ne pense pas que ce sera compliqué. J'imagine bien une règle qui interdit de mixer des arguments promouvants et des arguments standards dans un constructeur.le 25/06/2020 à 19:37
-
Séb.Expert éminentDéçu par str_contains() et str_begins/ends_with() et leur gestion des chaînes vides incohérente avec l'historique.
Code : 1
2str_contains('foo', ''); // true strpos('foo', ''); // false + warning
le 14/07/2020 à 1:33 -
DendriteMembre expertTu m'étonnes.
Je réagis comme toi et pense que c'est contre-intuitif.
Mais mon mari matheux trouve ça normal.le 14/07/2020 à 12:53 -
grunkModérateurOn va quand même pas commencer a avoir des comportements cohérents entre des fonctions d'une même famille 🤣le 14/07/2020 à 18:09
-
zozizozuMembre régulierBon ben, j'ai essayé php8, c'est top
Interressant, vraiment typé, effectivement plus rapide ( je n'ai effectué que le "test de Mabdelbrot" cité dans l'article).
Bref tout ça m'a l'ait très bien, mais, ..., j'ai essayé avec les 3 outils php que j'utilise le plus souvent :
- Symfony => fatal error, absolument incompatible, par exemple la fonction PDOConnection::query() n'est pas compatible avec celle de la class héritée PDO::query( string $statement , int $fetch_style , ... )
- Prestashop => fatal error, absolument incompatible, par exemple "array_key_exists( $propertyName, $classObject)" ne passe pas du tout en php8, et c' est très bien.
- Wordpress => quelques warning et deprecated, sinon ça tourne nickel
J'ai tenté quelques correctif, mais il y a vraiment trop à faire.
Il semble que la compatibilité va être difficile à gérer, ..., sauf pour l'équipe de Wordpress ( souvent fustigé ici, c'est pourquoi je me permet de le souligner °)le 02/08/2020 à 16:54