€0.00 — free as in speechtonight's forecast: clear skies over production Cache: warm · Deploys: fair, 0% rollbacks expectedset by moonlight, shipped before dawn · deploy freely Page A2

The Daily Commit The Nightly Build

Dev news, typeset daily — PHP · AI · The Wider Stack

The developer's evening paper — PHP · AI · The Wider Stack

mercredi 9 septembre 2026 Vol. I — No. 511 · Édition du matinÉdition du soir EN DE FR ES

PHP · Actus

PHP 8.5 : l'opérateur pipe met fin à l'imbrication inversée

Le nouvel opérateur pipe de PHP 8.5 permet d'écrire les appels de fonctions chaînés dans l'ordre d'exécution au lieu de les imbriquer de l'intérieur vers l'extérieur.

sélectionné par Georg

La syntaxe compile vers les mêmes opcodes que les appels classiques, sans coût à l'exécution. Les fonctions à plusieurs arguments nécessitent encore des fonctions fléchées.

PHP 8.5 introduit l'opérateur pipe `|>`, qui transmet le résultat de l'expression de gauche comme premier argument au callable de droite. L'exemple classique est l'assainissement d'entrées : au lieu d'imbriquer `strtolower(str_replace(..., trim($input)))`, qui se lit dans l'ordre inverse de l'exécution, on écrit la chaîne de gauche à droite.

slug.php
<?php
function makeSlug(string $input): string
{
    return $input
        |> trim(...)
        |> (fn($s) => str_replace(' ', '-', $s))
        |> strtolower(...)
        |> (fn($s) => preg_replace('/[^a-z0-9-]+/', '', $s));
}

L'opérateur exige un callable à droite, pas un appel de fonction immédiat. Pour les fonctions à un argument, on utilise la syntaxe de callable de première classe de PHP 8.1 : `trim(...)` crée une closure, tandis que `trim()` s'exécuterait immédiatement et échouerait. Les opcodes compilés correspondent à ceux des appels imbriqués, il n'y a pas de surcoût à l'exécution.

Les fonctions à plusieurs arguments doivent être enveloppées dans des fonctions fléchées, qui nécessitent impérativement des parenthèses pour éviter les erreurs de syntaxe. L'auteur note que cette verbosité est la critique la plus fréquente ; PHP 8.6 devrait apporter l'application partielle de fonctions pour y remédier.

Les méthodes d'instance ne peuvent pas être pipées directement et nécessitent des fonctions fléchées, tandis que les méthodes statiques fonctionnent avec la syntaxe de callable de première classe. Les fonctions void comme `var_dump` cassent la chaîne en transmettant null à l'étape suivante. La syntaxe n'est pas rétrocompatible avec PHP 8.4 ou antérieur. PhpStorm et VS Code avec Intelephense la prennent déjà en charge.

Lire la source originale (en anglais) ↗

Évaluer cet article : 0

Tribune des lecteurs

Pas encore de contributions — lance le débat.

The Daily CommitThe Nightly Build — Page A1