PHP 8.5 expliqué simplement : pipe, clone, tableaux et URI
PHP 8.5 est sorti le 20 novembre 2025. Nouveautés, exemples et contrôles de compatibilité avant la migration.
PHP 8.5 est sorti le 20 novembre 2025. Nouveautés, exemples et contrôles de compatibilité avant la migration.
Version et compatibilité
PHP 8.5 est paru le 20 novembre 2025. Passer de 8.4 à 8.5 change la version mineure, pas le premier chiffre. Avant la production, vérifiez framework, extensions et hébergeur, lisez le guide de migration et testez code et modules en préproduction avec sauvegarde et retour arrière.
Opérateur pipe
|> transmet une valeur à des fonctions appelables de gauche à droite. trim(...) et strtolower(...) sont des callables de première classe ; la fermeture reçoit le résultat précédent. À droite il faut un callable, pas une expression arbitraire. Cela facilite la lecture des transformations successives.
<?php
$title = ' PHP 8.5 Released ';
$slug = $title |> trim(...) |> (fn($s) => str_replace(' ', '-', $s)) |> strtolower(...);
var_dump($slug); // string(16) "php-8.5-released"
Cloner en modifiant des propriétés
clone($objet, ['propriété' => valeur]) copie et attribue les propriétés pendant le clonage, même dans une classe readonly. L’exemple change alpha dans la copie sans toucher l’original. Une affectation après un clonage simple ne pourrait pas réécrire une propriété readonly initialisée.
<?php
readonly class Color {
public function __construct(public int $red, public int $alpha = 255) {}
public function withAlpha(int $alpha): self {
return clone($this, ['alpha' => $alpha]);
}
}
$original = new Color(79);
$copy = $original->withAlpha(128);
Première et dernière valeurs
array_first() et array_last() renvoient les valeurs dans l’ordre du tableau et non selon les clés extrêmes. Un tableau vide donne null ; si null peut être une valeur réelle, testez le cas vide séparément. Contrairement à reset() et end(), elles ne changent pas le pointeur interne.
<?php
$items = ['first', 'middle', 'last'];
var_dump(array_first($items)); // "first"
var_dump(array_last($items)); // "last"
var_dump(array_first([])); // null
Extension URI
Uri\Rfc3986\Uri suit RFC 3986 ; PHP 8.5 fournit également le modèle URL WHATWG. Choisissez selon le besoin. L’extension ne remplace pas systématiquement les bibliothèques externes, la validation des URL, le contrôle des hôtes ni la sécurité des requêtes distantes.
<?php
use Uri\Rfc3986\Uri;
$uri = new Uri('https://example.com/path?q=1');
var_dump($uri->getHost()); // "example.com"
Dépréciations et mise à jour
Les casts (boolean), (integer), (double), (binary) sont dépréciés au profit de (bool), (int), (float), (string). Les accents graves utilisés comme alias de shell_exec() aussi. shell_exec() exprime mieux l’intention, sans sécuriser les entrées non fiables. Évitez si possible le shell et ne concaténez pas de données externes. Vérifiez les avertissements du guide.
Sources officielles
Version : https://www.php.net/releases/8.5/en.php ; fonctions : https://www.php.net/manual/en/migration85.new-functions.php ; dépréciations : https://www.php.net/manual/en/migration85.deprecated.php ; migration : https://www.php.net/manual/en/migration85.php .
Partager
Quelle est votre réaction ?
Aimer
0
Je n'aime pas
0
Amour
0
Drôle
0
En colère
0
Triste
0
Waouh
0