Programmation fonctionnelle en PHP : des bases à la pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Programmation fonctionnelle en PHP : une approche moderne de l'écriture de code

PHP est traditionnellement associé aux styles de programmation impérative et orientée objet. Cependant, avec la sortie des versions 7.4, 8.0 et 8.1, le langage a acquis des outils puissants pour la programmation fonctionnelle (FP). Cette approche paradigmatique permet d'écrire un code plus prévisible, testable et concis, en particulier lorsqu'on travaille avec des tableaux, des collections et des tâches asynchrones. Dans cet article, nous allons décomposer les concepts clés de la FP en PHP et montrer comment les appliquer en pratique.



1. Fondamentaux de la programmation fonctionnelle en PHP

La programmation fonctionnelle repose sur plusieurs principes fondamentaux :

  • Fonctions pures — le résultat ne dépend que des arguments, sans effets secondaires.
  • Immutabilité — les données ne sont pas modifiées, mais de nouvelles copies sont créées.
  • Fonctions d'ordre supérieur — des fonctions qui prennent d'autres fonctions comme arguments ou les retournent.
  • Récursion — remplacement des boucles par des fonctions qui s'appellent elles-mêmes.

PHP prend en charge ces concepts grâce aux fonctions anonymes (fermetures), aux fonctions fléchées (depuis PHP 7.4) et aux fonctions intégrées de tableau.



// Exemple de fonction purefunction add(int $a, int $b): int {    return $a + $b;}

// Exemple de fonction anonyme (fermeture)$multiply = function(int $x, int $y): int { return $x * $y;};

echo $multiply(3, 4); // 12

Important : Les fonctions pures en PHP ne doivent pas modifier les variables globales ni effectuer d'entrées/sorties (par exemple, echo). Cela garantit la prévisibilité et simplifie le débogage.



2. Fonctions anonymes, fermetures et fonctions fléchées

Les fonctions anonymes (fermetures) sont des fonctions sans nom qui peuvent être passées comme arguments ou assignées à des variables. Elles peuvent capturer des variables de la portée externe en utilisant le mot-clé use.



$factor = 2;$double = function(int $value) use ($factor): int {    return $value * $factor;};

echo $double(5); // 10

Depuis PHP 7.4, les fonctions fléchées sont apparues — une syntaxe plus concise pour les fermetures à une seule ligne. Elles capturent automatiquement les variables de la portée.



$factor = 2;$double = fn(int $value): int => $value * $factor;

echo $double(5); // 10

Quand les utiliser : Les fonctions fléchées sont idéales pour les transformations simples (par exemple, dans array_map), tandis que les fermetures classiques sont meilleures pour une logique complexe avec plusieurs instructions.



3. Fonctions d'ordre supérieur : map, filter, reduce

En PHP, des fonctions intégrées sont utilisées pour travailler avec les tableaux de manière fonctionnelle :

  • array_map() — applique une fonction à chaque élément d'un tableau.
  • array_filter() — filtre un tableau en fonction d'une condition.
  • array_reduce() — réduit un tableau à une seule valeur.


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

// map : doubler chaque élément$doubled = array_map(fn($n) => $n * 2, $numbers);print_r($doubled); // [2, 4, 6, 8, 10, 12]

// filter : ne garder que les nombres pairs$even = array_filter($numbers, fn($n) => $n % 2 === 0);print_r(array_values($even)); // [2, 4, 6]

// reduce : somme de tous les éléments$sum = array_reduce($numbers, fn($carry, $n) => $carry + $n, 0);echo $sum; // 21

Astuce : Utilisez array_values() après array_filter() pour réinitialiser les clés du tableau, sinon elles peuvent ne pas être séquentielles.



Ces fonctions permettent de remplacer les boucles foreach par des chaînes d'appels déclaratives, rendant le code plus lisible et moins sujet aux erreurs.

Blogs

Book Recommendations