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