Le Pipe Operator en PHP 8.5 : Exemples avec cas concrets


🧩 Introduction

  • Contexte de PHP 8.5
  • Pourquoi une telle syntaxe est introduite
  • Inspiration des langages fonctionnels
  • Ce que tu vas apprendre dans l’article

🚀 Qu’est-ce que le Pipe Operator |> ?

  • Définition
  • Syntaxe de base avec $$
  • Différence avec l’enchaînement traditionnel

Exemple simple :

$value = '  Hello World  ';
$result = $value
    |> trim($$)
    |> strtoupper($$);

🧪 Partie 1 : Cas simples avec chaînes de caractères

Objectif : montrer la transformation en pipeline

$input = "  je Suis une chaîne à nettoyer ";

$result = $input
    |> strtolower($$)
    |> trim($$)
    |> ucfirst($$);

Explication + comparaison avec les appels imbriqués.


📦 Partie 2 : Tableaux (filter, map, reduce)

Exemple 1 : nettoyage de tableau

$data = [' apple ', 'Banana', ' ', 'Kiwi'];

$cleaned = $data
    |> array_map('trim', $$)
    |> array_filter($$);

Exemple 2 : transformation avec fonctions anonymes

$numbers = [1, 2, 3, 4, 5];

$squared = $numbers
    |> array_map(fn($n) => $n * $n, $$)
    |> array_filter(fn($n) => $n > 10, $$);

🧑‍💻 Partie 3 : Objets & Méthodes

Limites actuelles et workarounds

class User {
    public function getName(): string { return 'Jean'; }
}

$user = new User();

$name = $user
    |> (fn($u) => $u->getName())($$)
    |> strtoupper($$);

Explication sur l’obligation d’utiliser des closures pour des appels de méthodes.


🔁 Partie 4 : Fonctions enchaînées personnalisées

function sanitize(string $input): string {
    return trim(strtolower($input));
}

function format(string $input): string {
    return ucfirst($input);
}

$final = '  Mon TEXTE  '
    |> sanitize($$)
    |> format($$);

Et avec des fonctions anonymes déclarées inline.


🧱 Partie 5 : Pipelines complexes

Exemple : pipeline de transformation d’un tableau associatif

$product = [
    'name' => '  savon noir ',
    'price' => '12.90 ',
];

$cleaned = $product
    |> array_map('trim', $$)
    |> array_map('strtolower', $$)
    |> fn($p) => ['name' => ucfirst($p['name']), 'price' => (float)$p['price']]($$);

💥 Partie 6 : Limitations et pièges

  • Ne pas confondre avec variable variables ($$)
  • Pas (encore) de support natif pour méthodes chaînées
  • Attention aux effets de bord
  • Le debug peut devenir obscur si mal structuré

📚 Partie 7 : Cas d’usage en entreprise / production

  • Exemple pipeline de validation d’input utilisateur
  • Exemple traitement d’un CSV
  • Exemple traitement d’un JSON en API

🔮 Partie 8 : Vers un PHP plus fonctionnel ?

  • Évolution de PHP
  • Pipe operator comme première pierre vers la programmation fonctionnelle ?
  • Comparaison avec d’autres langages : JavaScript, Elixir, F#, Hack

✅ Conclusion

  • Pourquoi adopter |> dès PHP 8.5
  • Conseils de style
  • Où il brille / où il faut rester prudent

Souhaites-tu que je te génère dès maintenant la première version complète de cet article (en markdown ou HTML) ? Tu peux aussi choisir un ton : plutôt technique, pédagogique, décontracté, orienté dev entreprise, etc.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.