Quoi de neuf dans PHP 8.5 ? Un aperçu complet

PHP 8.5 sort en novembre 2025 et apporte plusieurs nouvelles fonctionnalités utiles et des améliorations. Cette nouvelle version se concentre sur l'amélioration de l'expérience développeur, de nouvelles fonctions utilitaires et de meilleures capacités de débogage.
Les principales nouveautés en bref
1. Des nouvelles fonctions pour les tableaux : array_first()
et array_last()
Tout d'abord, PHP 8.5 ajoute deux fonctions très demandées pour récupérer les premières et dernières valeurs d'un tableau, en complétant ainsi les fonctions existantes array_key_first()
et array_key_last()
de PHP 7.3.
$users = ['Alice', 'Bob', 'Charlie'];
$firstUser = array_first($users); // 'Alice'
$lastUser = array_last($users); // 'Charlie'
// Fonctionne aussi avec les tableaux associatifs
$data = ['name' => 'John', 'age' => 30, 'city' => 'Berlin'];
echo array_first($data); // 'John'
echo array_last($data); // 'Berlin'
// Retourne null pour les tableaux vides
$empty = [];
var_dump(array_first($empty)); // null
var_dump(array_last($empty)); // null
Ces fonctions sont équivalentes à :
array_first($array)
→$array[array_key_first($array)]
array_last($array)
→$array[array_key_last($array)]
En savoir plus : PHP.Watch - array_first() et array_last()
2. L'opérateur Pipe (|>
)
PHP 8.5 intègre un nouvel opérateur pipe (|>
) qui permet de chaîner plusieurs callable de gauche à droite, en passant la valeur de retour du callable de gauche à celui de droite :
$result = 'Hello World'
|> strtoupper(...)
|> str_shuffle(...)
|> trim(...);
// Sortie : 'LWHO LDLROE' (ou résultat mélangé similaire)
// Équivalent aux appels imbriqués :
$result = trim(str_shuffle(strtoupper('Hello World')));
// Ou en utilisant des variables :
$result = 'Hello World';
$result = strtoupper($result);
$result = str_shuffle($result);
$result = trim($result);
L'opérateur pipe fonctionne avec tous les callable - fonctions, méthodes, closure et first-class callable. Cependant, il a quelques limites :
Tous les callable doivent accepter seulement un paramètre requis
Les fonctions avec des paramètres par référence ne peuvent pas être utilisées (avec quelques exceptions)
La valeur de retour est toujours passée comme premier paramètre
En savoir plus : PHP.Watch - Opérateur Pipe
3. De nouveaux getters pour les gestionnaires d'erreurs et d'exceptions
PHP 8.5 introduit aussi deux nouvelles fonctions qui permettent de récupérer les gestionnaires d'erreurs et d'exceptions actuellement actifs : get_error_handler()
et get_exception_handler()
.
C'est particulièrement utile pour :
Le développement de frameworks et le chaînage de gestionnaires
Le débogage des configurations de gestion d'erreurs
La substitution temporaire de gestionnaires tout en préservant les originaux
Les deux fonctions retournent le callable du gestionnaire actuel ou null
si aucun gestionnaire personnalisé n'est défini.
En savoir plus : PHP.Watch - get_error_handler() et get_exception_handler()
4. Une nouvelle fonction cURL : curl_multi_get_handles()
L'extension cURL obtient une nouvelle fonction pour récupérer tous les handles d'un multi-handle :
$multiHandle = curl_multi_init();
$ch1 = curl_init('https://api.example.com/users');
$ch2 = curl_init('https://api.example.com/posts');
curl_multi_add_handle($multiHandle, $ch1);
curl_multi_add_handle($multiHandle, $ch2);
// Nouveau dans PHP 8.5 : Récupérer tous les handles
$handles = curl_multi_get_handles($multiHandle);
// Retourne : [$ch1, $ch2]
// Exécuter et traiter les résultats
$running = null;
do {
curl_multi_exec($multiHandle, $running);
} while ($running > 0);
foreach ($handles as $handle) {
$response = curl_multi_getcontent($handle);
curl_multi_remove_handle($multiHandle, $handle);
}
En savoir plus : PHP.Watch - curl_multi_get_handles()
5. Une nouvelle fonction Locale : locale_is_right_to_left()
PHP 8.5 ajoute également un support pour détecter les locales droite-à-gauche (RTL), ce qui améliore les capacités d'internationalisation :
// Vérifier si la locale utilise l'écriture RTL
$isRTL = locale_is_right_to_left('ar_SA'); // true (Arabe)
$isLTR = locale_is_right_to_left('en_US'); // false (Anglais)
$isFarsi = locale_is_right_to_left('fa_IR'); // true (Persan/Farsi)
// Approche orientée objet
$isRTL = Locale::isRightToLeft('he_IL'); // true (Hébreu)
C'est une fonctionnalité qui sera très utile pour :
Construire des applications web multilingues
L'alignement correct du texte dans les interfaces utilisateur
L'attribution dynamique de classes CSS, basée sur la locale
En savoir plus : PHP.Watch - locale_is_right_to_left()
6. Une nouvelle constante PHP_BUILD_DATE
Une nouvelle constante fournit la date de compilation du binaire PHP, ce qui sert pour le débogage et l'audit de version :
echo PHP_BUILD_DATE; // ex., 'Nov 15 2025 10:30:45'
// Utile pour le débogage en production
echo 'Version PHP : ' . PHP_VERSION . "\n";
echo 'Date de compilation : ' . PHP_BUILD_DATE . "\n";
En savoir plus : PHP.Watch - PHP_BUILD_DATE
7. Une amélioration du CLI : php --ini=diff
Une nouvelle option CLI apparaît pour afficher seulement les directives INI non-par-défaut :
# Afficher seulement les paramètres modifiés
php --ini=diff
# Exemple de sortie :
# memory_limit = 256M (default: 128M)
# max_execution_time = 60 (default: 30)
En savoir plus : PHP.Watch - CLI --ini=diff
Pourquoi migrer vers PHP 8.5 ?
Une expérience développeur améliorée : Les nouvelles fonctions de tableaux éliminent le "code passe-partout" courant et rendent les intentions plus claires.
Un meilleur débogage : Les nouveaux getters de gestionnaires fournissent une meilleure compréhension du comportement de l'application.
Des outils améliorés : La nouvelle option de CLI et la constante de date de compilation aident au débogage et au suivi de déploiement.
Garantir la pérennité : Restez à jour avec les dernières fonctionnalités PHP et les mises à jour de sécurité.
Conclusion
Si PHP 8.5 ne révolutionne pas le langage, il apporte des améliorations pratiques qui enrichissent les workflows de développement quotidiens. Les nouvelles fonctions de tableaux répondent aux demandes de longue date des développeurs, tandis que l'opérateur pipe permet d'effectuer des appels de fonctions de manière plus propre.
La mise à niveau de PHP 8.4 vers PHP 8.5 devrait être simple pour la plupart des applications, car les nouvelles fonctionnalités apportent immédiatement de la valeur sans endommager le code existant.
Ma recommandation de monter de version : Si vous utilisez déjà PHP 8.4, je vous recommande de monter de version vers PHP 8.5. Les nouvelles fonctionnalités améliorent la qualité du code et les capacités de débogage, tout en réduisant l'effort de la montée de version.