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

Comment faire de la programmation fonctionnelle avec PHP

WBOY
WBOYoriginal
2023-06-06 08:21:031506parcourir

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 centrale de la programmation fonctionnelle est de traiter les fonctions comme des citoyens de première classe, et les fonctions elles-mêmes peuvent être transmises, renvoyées et composées comme des variables. 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. Fonctions d'ordre supérieur

Les fonctions d'ordre supérieur sont des fonctions qui peuvent 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.

La fonction 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 transformation 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]

array_filter peut accepter une fonction et An. array est utilisé comme paramètre et un nouveau tableau est renvoyé. 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]

array_reduce la fonction peut accepter une fonction. , un tableau et une valeur initiale en paramètre, renvoie 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
  1. Fonction anonyme

Anonyme. function est une fonction sans nom. Les fonctions peuvent être utilisées 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 des fonctions fléchées pour une définition rapide.

Par exemple, nous pouvons utiliser une fonction anonyme pour définir rapidement une fonction qui trouve des carrés :

$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
  1. Currying

Currying est une méthode de combinaison de plusieurs paramètres Une technique pour convertir une fonction en fonction avec un seul argument. 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 espérons implémenter une version curry :

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
  1. Fonction combinée

La fonction combinée fait référence à la combinaison de plusieurs fonctions ensemble pour former une nouvelle fonction. 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 la composition des 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 f($x) {
    return $x + 1;
}

function g($x) {
    return $x * 2;
}

$compose = function($f, $g) {
    return function($x) use ($f, $g) {
        return $f($g($x));
    };
};

$h = $compose('f', 'g');
$result = $h(2);
var_dump($result); // 输出 5
  1. Résumé

Cet article présente comment utiliser PHP pour la programmation fonctionnelle, y compris des techniques courantes telles que les fonctions d'ordre supérieur, les fonctions anonymes, le curry et la composition de fonctions. 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