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 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.

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 Aimer 0
Je n'aime pas Je n'aime pas 0
Amour Amour 0
Drôle Drôle 0
En colère En colère 0
Triste Triste 0
Waouh Waouh 0