PHPのアロー関数についてまとめました。
アロー関数はPHP7.4で追加されたとのことで、簡潔に無名関数を書くことができます。
公式ドキュメントはこちら(https://www.php.net/manual/ja/functions.arrow.php)です。
掲載しているソースコードはPHPのバージョン8.2.6で動作確認しました。
PHPでアロー関数を使う
PHPのアロー関数を使うことで、簡単に無名関数を書くことができます。
下記のようにfnを使って、定義することができます。
$plusText = fn ($value) => $value . "はおいしいです。";
echo $plusText('カレー'); // カレーはおいしいです。
echo $plusText('寿司'); // 寿司はおいしいです。
echo $plusText('バーガー'); // バーガーはおいしいです。
fnを使って、無名関数を作って$plusText
に代入しています。
fnを書いた後に関数の引数を書いて、「=>
」の後に1行で処理を書きます。
今回作った関数は渡した文字列と、固定文字列を結合して返すものです。
引数を渡して、実行すると渡した引数の文字列が結合されて、出力されることが確認できます。
アロー関数でuseは必要?
アロー関数を使うとuseを使わなくても、関数の外の変数を参照することができますが、処理は1行でしか書くことができません。
例えば、下記のように関数外の変数を参照して処理することができます。
$total = 150;
$addValue = fn ($number1, $number2) => $number1 + $number2 + $total;
echo $addValue(10, 20); // 180
fnでアロー関数を作って、2つの引数の値を足して、それに外部変数の$total
を足して返しています。
結果を確認すると「10」と「20」を渡して、「30」ですが、$total
(150)も足して「180」になりました。
外部変数の値も参照できていることが確認できました。
ネストしたアロー関数
あまり使う機会がないかもしれませんが、アロー関数をネストすることもできます。
3つの関数をネストして、書きました。
$addValue = fn ($number1) => fn ($number2) => fn ($number3) => $number1 + $number2 + $number3;
echo $addValue(4)(77)(35); // 116
それぞれ、数値を渡して、引数が足されて返ってくることが確認できました。
外部変数の値は変更できない
アロー関数で外部の変数を参照すると、値渡しのようになるようで、外部変数の値の変更はできません。
例えば、下記のようなコードです。
$total = 115;
$addTotal = fn ($number) => $total = $total + $number;
$addTotal(100);
echo $total; // 115
$total
変数に「115」を代入して、次のアロー関数の内部で代入していますが、$total
変数の値は変わりません。
アロー関数を呼び出して、「100」を渡しましたが、$total
変数を出力すると「115」のままになっています。
おわりに
今回はPHPのアロー関数について確認してみました。
普通に関数を定義するよりも、簡単に作って使っていくことができました。
筆者はあまり活用できていませんが、簡単な処理を複数回やるような時に使うと良さそうです。
コメント