Dans le code orienté objet, « composition » signifie généralement « un objet ayant une référence à un autre ». En programmation fonctionnelle, « composition » signifie généralement « coller deux fonctions ensemble de bout en bout pour en créer une nouvelle ». Les deux sont des techniques valides et utiles, surtout dans un langage multi-paradigme comme PHP.
La composition prend généralement deux formes : immédiate et retardée. L’exécution immédiate des fonctions en chaîne est généralement mise en œuvre avec un opérateur « pipe ». L’exécution différée est généralement implémentée avec un opérateur de composition, qui prend deux fonctions et produit une nouvelle fonction appelant chacune à son tour. La combinaison des deux permet de manière propre le « style sans point », une approche de programmation qui limite l’utilisation de variables intermédiaires inutiles. Le style sans points gagne en popularité dans les cercles JavaScript, il sera donc familier aux développeurs JavaScript utilisant ce style.
Cette RFC introduit l’opérateur « pipe », sous la forme utilisée par la plupart des autres langages disposant de telles fonctionnalités. Un opérateur de composition de fonctions est sauvegardé pour une RFC de suivi. (Voir Portée future.)
Par exemple :
function getUsers(): array {
return [
new User('root', isAdmin: true),
new User('john.doe', isAdmin: false),
];
}
function isAdmin(User $user): bool {
return $user->isAdmin;
}
// This is the new syntax.
$numberOfAdmins = getUsers()
|> (fn ($list) => array_filter($list, isAdmin(...)))
|> count(...);
var_dump($numberOfAdmins); // int(1);
Publié le 05/03/2026 à 16:46