Maison  >  Article  >  développement back-end  >  Comment faire de la programmation fonctionnelle avec PHP

Comment faire de la programmation fonctionnelle avec PHP

王林
王林original
2023-06-06 08:21:021522parcourir

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.

  1. Bases de 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.

  1. Fonction d'ordre supérieur

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
  1. Une fonction anonyme est une fonction sans nom qui peut être utilisée pour définir des fonctions qui ne sont utilisées qu'une seule fois ou rarement. En programmation fonctionnelle, les fonctions anonymes peuvent être utilisées pour une définition et une composition de fonctions rapides et légères.

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

  1. Currying est une technique qui convertit une fonction à plusieurs paramètres en une fonction à un seul paramètre. En programmation fonctionnelle, le curry peut être utilisé pour réutiliser et simplifier des fonctions.
En PHP, vous pouvez utiliser des fermetures et des fonctions d'ordre supérieur pour implémenter le curry. Par exemple, nous avons une fonction add(x,y,z) et souhaitons implémenter une version curry : la combinaison de fonctions fait référence à la combinaison de plusieurs fonctions pour former de nouvelles fonctions, qui peuvent être utilisées pour simplifier le code et améliorer la lisibilité et la maintenabilité du code.

En PHP, les fermetures et les fonctions d'ordre supérieur peuvent être utilisées pour réaliser une combinaison de fonctions. Par exemple, nous avons deux fonctions $f(x)$ et $g(x)$ et souhaitons implémenter une fonction combinée $h(x)$ telle que $h(x) = f(g(x))$ :# 🎜🎜#
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); // 输出 6

Summary
  1. Cet article présente comment utiliser PHP pour la programmation fonctionnelle, y compris les fonctions d'ordre supérieur, les fonctions anonymes, le curry et les fonctions composition et d’autres technologies couramment utilisées. La programmation fonctionnelle peut rendre le code plus modulaire, plus facile à tester et à maintenir. Pour les développeurs Web, comprendre la programmation fonctionnelle est très précieux.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn