PHP 8.5 introduit l'extension URI, l'opérateur pipe et des améliorations de la syntaxe
PHP 8.5 introduit une nouvelle extension URI, l'opérateur pipe et des améliorations de syntaxe clés, offrant des performances plus rapides et un code plus clair.
PHP, un langage de programmation côté serveur principalement utilisé pour créer des sites Web et des applications Web dynamiques, vient de publier la version 8.5, une mise à jour majeure qui ajoute une nouvelle syntaxe, un support étendu des attributs, des améliorations de performance et plusieurs fonctionnalités basées sur des RFC.
L'une des ajouts les plus significatifs est la nouvelle extension URI intégrée. Elle fournit une API cohérente pour l'analyse et la modification des URL, conformément aux normes RFC 3986 et WHATWG. Soutenue par uriparser et Lexbor, elle remplace parse_url() dans les scénarios où une gestion précise et conforme aux normes est requise.
Un autre point fort de cette version est l'introduction de l'opérateur pipe (|>), qui permet d'enchaîner les fonctions de gauche à droite. Cela élimine les appels de fonctions profondément imbriqués, rendant les pipelines de transformation plus faciles à lire et à maintenir. Les valeurs passent directement à travers les fonctions appelables, y compris les fonctions fléchées et les applications partielles comme trim(...).
PHP 8.5 améliore également la gestion des objets avec la syntaxe clone-with. Les développeurs peuvent maintenant mettre à jour certaines propriétés lors du clonage d’un objet via clone($obj, ['prop' => valeur]), ce qui simplifie le modèle « with-er » et le rend utilisable dans les classes en lecture seule sans code répétitif.
Une autre nouveauté est l’attribut #[\NoDiscard], qui génère un avertissement lorsqu’on ignore involontairement la valeur de retour d’une fonction. Cela aide à détecter les erreurs dans les API où une valeur de retour est nécessaire pour un fonctionnement correct, avec (void) disponible lorsque le développeur choisit explicitement de la jeter.
Le langage étend également la prise en charge des expressions à la compilation. Les closures statiques et les callables de première classe sont désormais autorisés dans les expressions constantes, ce qui les rend utilisables dans les arguments d'attribut, les valeurs par défaut des propriétés et les constantes de classe.
Les améliorations liées à la performance incluent des handles cURL partageables persistants. Avec curl_share_init_persistent(), les handles partagés survivent entre les requêtes et réutilisent les données de connexion initialisées précédemment, réduisant ainsi la surcharge lors des opérations réseau répétées pour les applications de longue durée.
Deux nouvelles fonctions d'assistance, array_first() et array_last(), offrent une gestion plus claire pour les cas courants. Les deux renvoient null pour les tableaux vides, ce qui simplifie la composition avec l'opérateur de coalescence nulle et supprime le besoin de vérifier manuellement les clés.
Les modifications supplémentaires couvrent un large éventail de fonctionnalités linguistiques. Les erreurs fatales incluent maintenant des traces d'appel, les attributs peuvent cibler des constantes, et les propriétés statiques prennent en charge la visibilité asymétrique.
Les propriétés peuvent être marquées comme final via la promotion des propriétés du constructeur. De plus, PHP ajoute également de nouvelles méthodes DOM telles que getElementsByClassName() et insertAdjacentHTML(), ainsi que de nouvelles fonctions utilitaires comme grapheme_levenshtein().
Enfin, les dépréciations dans PHP 8.5 incluent la suppression des noms de cast non canoniques, la dépréciation de l'opérateur backtick comme alias de shell_exec(), les avertissements pour les conversions de float en int invalides, et les limites sur l'utilisation de null comme indice de tableau. Les méthodes de sérialisation plus anciennes __sleep() et __wakeup() sont désormais doucement dépréciées au profit de __serialize() et __unserialize().
Pour plus d'informations sur tous les changements dans PHP 8.5, consultez l'annonce officielle de la version ou cette page.
