PHP は広く使用されているサーバーサイド言語です。多くの Web 開発者が PHP の使用を好む理由の 1 つは、その豊富な関数ライブラリとシンプルで使いやすい関数構文です。関数型プログラミングは、データと動作を適切にカプセル化し、コードをよりモジュール化し、保守とテストを容易にするプログラミング パラダイムです。この記事では、PHPを使った関数型プログラミングの方法を紹介します。
関数型プログラミングの中心的な考え方は、関数を第一級市民として扱うことであり、関数自体を渡し、返し、構成することができます。変数のようなもの。関数型プログラミングでは、可変状態を変更するのではなく、関数を通じてそれを変換およびフィルター処理します。
PHP 自体は関数型プログラミングをサポートしており、関数型処理に使用できる組み込み関数が多数あります。たとえば、array_map、array_filter などです。以下では、これらの関数を使用して一般的な関数プログラミング操作を実装する方法を示します。
高階関数とは、関数をパラメーターとして受け取ったり、関数を返したりできる関数を指します。このような関数を使用すると、コードを作成して再利用できます。 PHP で一般的に使用される高階関数には、array_map、array_filter、array_reduce などがあります。
array_map 関数は、関数と配列をパラメータとして受け取り、新しい配列を返すことができます。新しい配列の要素は、元の配列の要素が関数によって変換された後に取得される値です。
たとえば、配列 $x=[1,2,3,4]$ があり、配列内の各要素を 2 乗したいとします。次のコードを使用できます:
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 関数は、関数と配列をパラメータとして受け取り、新しい配列を返すことができます。新しい配列の要素は、条件を満たす元の配列の要素です。
たとえば、配列 $x=[1,2,3,4]$ があり、配列内のすべての偶数を取得したい場合は、次のコードを使用できます:
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 関数は関数、配列、初期値を引数として受け取り、累積した結果を返します。 reduce 関数は、配列内の各要素を計算用の関数に渡し、累積結果を取得します。
たとえば、配列 $x=[1,2,3,4]$ があり、配列内のすべての要素を蓄積したいとします。次のコードを使用できます:
function add($a, $b) { return $a + $b; } $array = [1, 2, 3, 4]; $result = array_reduce($array, 'add'); var_dump($result); // 输出 10
匿名関数は、一度だけまたはめったに使用されない関数を定義するために使用できる名前のない関数です。関数型プログラミングでは、匿名関数を使用して、高速かつ軽量の関数定義と合成を行うことができます。
PHP では、キーワード関数を使用して匿名関数を定義したり、アロー関数を使用して簡単に定義したりできます。
たとえば、無名関数を使用して二乗関数をすばやく定義できます:
$square = function($x) { return $x * $x; }; $result = $square(3); var_dump($result); // 输出 9
アロー関数の構文を使用すると、上記のコードをさらに簡素化できます:
$square = fn($x) => $x * $x; $result = $square(3); var_dump($result); // 输出 9
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
結合関数
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
概要
以上がPHPで関数型プログラミングを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。