PHP 8.4 : les property hooks et la fin de la cérémonie getter/setter

PHP 8.4 est sorti le 21 novembre. Les property hooks sont la fonctionnalité. Tout le reste, et il y en a beaucoup, est secondaire. Les property hooks Pendant vingt ans, si on voulait du comportement à l’accès d’une propriété en PHP, il fallait écrire des getters et setters : class User { private string $_name; public function getName(): string { return $this->_name; } public function setName(string $name): void { $this->_name = strtoupper($name); } } PHP 8.4 ajoute des hooks directement sur la propriété : ...

5 janvier 2025 · 8 min · Guillaume Delré

PHP 8.3 : les constantes typées et les petites victoires qui restent

PHP 8.3 est sorti le 23 novembre. Une version discrète par les standards PHP : pas de bouleversement à la taille des enums, pas de JIT. Ce qu’elle apporte, c’est un ensemble ciblé d’améliorations qui comblent des lacunes de longue date dans le système de types et ajoutent des fonctions qui auraient dû exister depuis des années. Les constantes de classe typées Les constantes de classe n’ont jamais été typées depuis leur introduction. PHP 8.3 corrige ça : ...

7 janvier 2024 · 6 min · Guillaume Delré

PHP 8.2 : les classes readonly et la dépréciation qui compte vraiment

PHP 8.2 est sorti le 8 décembre. Les classes readonly font les gros titres. La dépréciation des propriétés dynamiques, elle, demande votre attention concrète. Les propriétés dynamiques dépréciées PHP a toujours permis d’ajouter des propriétés à des objets sans les déclarer dans la classe : class User {} $user = new User(); $user->name = 'Alice'; // aucune déclaration, aucune erreur... jusqu'ici En 8.2, ça déclenche un avertissement de dépréciation. En PHP 9.0, ce sera une erreur fatale. Le délai de grâce existe, mais le compteur tourne. ...

22 janvier 2023 · 5 min · Guillaume Delré

PHP 8.1 : enums, fibers, et un système de types qui grandit

PHP 8.1 est sorti le 25 novembre. Il fait suite à la refonte massive de 8.0 avec quelque chose de différent : moins de fonctionnalités, mais chacune vraiment réfléchie plutôt que greffée à la va-vite. Les enums C’est la nouveauté qui change les bases de code dès la mise à jour. Avant 8.1, les énumérations en PHP se résumaient à des constantes de classe, des chaînes ou des entiers sans rien pour les faire respecter : ...

9 janvier 2022 · 6 min · Guillaume Delré

PHP 8.0 : match, arguments nommés, attributs et JIT

PHP 8.0 est sorti le 26 novembre. Je le fais tourner depuis six semaines sur un projet perso et un nouveau service au boulot. C’est la version PHP la plus significative depuis 7.0, et à certains égards plus impactante, parce que les changements se renforcent mutuellement de façon utile. JIT Le compilateur Just-In-Time était l’annonce principale. La réalité en production est plus nuancée : pour les applications web typiques (requêtes en base, appels HTTP, rendu de templates) les gains sont modestes, parce que ces workloads sont limités par les I/O, pas par le calcul. Là où le JIT brille vraiment, c’est le code intensif en CPU : manipulation d’images, transformation de données, calcul mathématique. ...

10 janvier 2021 · 9 min · Guillaume Delré

PHP 7.4 : les propriétés typées et les arrow functions qu'on attendait

PHP 7.4 est sorti le 28 novembre. C’est la dernière version 7.x avant PHP 8.0, et ça se sent. Les fonctionnalités sont suffisamment substantielles pour tenir debout seules, mais elles ressemblent aussi à des fondations pour ce qui arrive. Les propriétés typées C’est la grande nouveauté. Depuis PHP 7.0, on pouvait typer les paramètres de fonctions et les valeurs de retour. Mais les propriétés de classe ? Toujours non typées : ...

12 janvier 2020 · 7 min · Guillaume Delré

PHP 7.1 : un système de types plus rigoureux et les petits gains autour

PHP 7.1 est sorti le 1er décembre. Pas de titre “2x plus rapide”, pas de réécriture du moteur. Il comble les lacunes que la 7.0 avait laissées dans le système de types, et ces lacunes étaient vraiment agaçantes. Les types nullables La 7.0 permettait de déclarer string $name comme type de paramètre. Ce qu’elle ne permettait pas, c’était de dire “ça peut aussi être null”. On devait soit abandonner le type hint complètement, soit bricoler autour. La 7.1 ajoute le préfixe ? : ...

15 janvier 2017 · 4 min · Guillaume Delré

PHP 7.0 : performances, types, et les fonctionnalités qui ont marqué

PHP 7.0 est sorti le 3 décembre. Un mois et demi plus tard, j’ai migré deux projets et les résultats sont difficiles à ignorer. Le chiffre phare : 2x plus rapide que PHP 5.6. Ce n’est pas un benchmark cherry-pick — c’est la médiane sur des applications réelles. Le Zend Engine a été réécrit pour utiliser une nouvelle représentation interne des valeurs, ce qui réduit significativement l’utilisation mémoire et diminue les allocations. Sur un projet, le temps de réponse moyen a chuté de 40% sans aucune modification du code. On met à jour, et ça va plus vite. ...

17 janvier 2016 · 6 min · Guillaume Delré