PHP continue de se moderniser
Après les révolutions de PHP 8.0 (JIT, match, named arguments) et PHP 8.1 (enums, fibers, readonly properties), PHP 8.3 apporte des améliorations ciblées mais bienvenues. Le langage gagne en rigueur et en expressivité à chaque version.
Les classes readonly
Déjà possible sur les propriétés individuelles depuis PHP 8.1, le mot-clé readonly peut désormais s'appliquer à la classe entière. Toutes les propriétés deviennent automatiquement readonly, simplifiant la création de Value Objects et de DTOs.
Typed class constants
Les constantes de classe peuvent enfin avoir un type déclaré. C'est un gain important pour la sûreté du code, notamment dans les interfaces et les classes abstraites où les constantes sont redéfinies par les implémentations.
La fonction json_validate()
Jusqu'à présent, pour vérifier qu'une chaîne est un JSON valide, il fallait utiliser json_decode() et vérifier l'erreur. La nouvelle fonction json_validate() est plus rapide et plus explicite : elle retourne simplement true ou false.
Méthode #[Override]
L'attribut #[Override] indique explicitement qu'une méthode redéfinit une méthode parente. Si la méthode parente est renommée ou supprimée, PHP lèvera une erreur. Cela prévient les bugs silencieux lors de refactoring.
Améliorations des randomiseurs
Les classes Random\Randomizer gagnent de nouvelles méthodes : getBytesFromString() pour générer des chaînes aléatoires à partir d'un alphabet donné, et getFloat() pour des nombres flottants aléatoires avec une distribution uniforme.
Migration
La mise à jour vers PHP 8.3 est généralement sans douleur depuis PHP 8.2. Vérifiez les dépréciations avec PHPStan et lancez vos tests. Les frameworks majeurs (Laravel, Symfony) supportent PHP 8.3 dès leur dernière version.

