Maison >développement back-end >tutoriel php >Comment faire de la programmation fonctionnelle avec PHP
PHP est un langage côté serveur largement utilisé. L'une des raisons pour lesquelles de nombreux développeurs Web aiment utiliser PHP est sa riche bibliothèque de fonctions et sa syntaxe de fonctions simple et facile à utiliser. La programmation fonctionnelle est un paradigme de programmation qui encapsule bien les données et le comportement, rendant le code plus modulaire et plus facile à maintenir et à tester. Dans cet article, nous présenterons comment utiliser PHP pour la programmation fonctionnelle.
L'idée fondamentale de la programmation fonctionnelle est de traiter les fonctions comme des citoyens de première classe, et les fonctions elles-mêmes peuvent être utilisé comme variables Pass, return et combine. En programmation fonctionnelle, nous ne modifions pas l'état mutable, mais plutôt le transformons et le filtrons à travers des fonctions.
PHP lui-même prend en charge la programmation fonctionnelle, et il existe de nombreuses fonctions intégrées qui peuvent être utilisées pour le traitement fonctionnel. Par exemple array_map, array_filter, etc. Ci-dessous, nous montrons comment utiliser ces fonctions pour implémenter des opérations de programmation fonctionnelle courantes.
La fonction d'ordre supérieur fait référence à une fonction qui peut accepter des fonctions comme paramètres ou renvoyer des fonctions. De telles fonctions peuvent être utilisées pour composer et réutiliser du code. En PHP, les fonctions d'ordre supérieur couramment utilisées incluent array_map, array_filter, array_reduce, etc.
array_map peut accepter une fonction et un tableau comme paramètres, et renvoyer un nouveau tableau. Les éléments du nouveau tableau sont les valeurs obtenues après la conversion des éléments du tableau d'origine par la fonction. .
Par exemple, nous avons un tableau $x=[1,2,3,4]$ et voulons mettre au carré chaque élément du tableau. Vous pouvez utiliser le code suivant :
function square($x) { return $x * $x; } $array = [1, 2, 3, 4]; $new_array = array_map('square', $array); var_dump($new_array); // 输出 [1, 4, 9, 16]. La fonction
array_filter peut accepter une fonction et un tableau comme paramètres et renvoyer un nouveau tableau. Les éléments du nouveau tableau sont les éléments du tableau d'origine qui remplissent les conditions.
Par exemple, nous avons un tableau $x=[1,2,3,4]$ et voulons obtenir tous les nombres pairs du tableau, vous pouvez utiliser le code suivant : #🎜🎜 #
function is_even($x) { return $x % 2 == 0; } $array = [1, 2, 3, 4]; $new_array = array_filter($array, 'is_even'); var_dump($new_array); // 输出 [2, 4]La fonction array_reduce peut accepter une fonction, un tableau et une valeur initiale comme paramètres et renvoyer un résultat cumulé. La fonction de réduction transmet chaque élément du tableau à une fonction pour le calcul, puis obtient un résultat cumulé. Par exemple, nous avons un tableau $x=[1,2,3,4]$ et souhaitons accumuler tous les éléments du tableau. Vous pouvez utiliser le code suivant :
function add($a, $b) { return $a + $b; } $array = [1, 2, 3, 4]; $result = array_reduce($array, 'add'); var_dump($result); // 输出 10. # 🎜🎜#Fonction anonyme
En PHP, vous pouvez utiliser la fonction mot-clé pour définir des fonctions anonymes, ou vous pouvez utiliser les fonctions fléchées pour une définition rapide.
Par exemple, nous pouvons utiliser une fonction anonyme pour définir rapidement une fonction carrée :
$square = function($x) { return $x * $x; }; $result = $square(3); var_dump($result); // 输出 9
La syntaxe de la fonction flèche peut simplifier davantage le code ci-dessus :
$square = fn($x) => $x * $x; $result = $square(3); var_dump($result); // 输出 9#🎜 🎜 #
currying
function add($x, $y, $z) { return $x + $y + $z; } $curried_add = function($x) use ($add) { return function($y) use ($x, $add) { return function($z) use ($x, $y, $add) { return $add($x, $y, $z); }; }; }; $result = $curried_add(1)(2)(3); var_dump($result); // 输出 6Summary
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!