最近PHPの言語仕様について改めて勉強しています。
今回はPHPのアロー関数についてまとめてみました。
目次
アロー関数とは
アロー関数は無名関数を簡潔に書ける文法です。
PHP7.4で追加されました。
アロー関数の記述方法
アロー関数の記述方法は次のとおりです。
- function の代わりに fn という記述を使う
- 波括弧 {} は使用できない
- return は使用できない
記述例
// アロー関数 $a = fn($x) => $x + 10; // 無名関数 $b = function($x) { return $x + 10; };
無名関数では値を返す際、returnを使用しますが、アロー関数の場合は右辺の式の計算結果が使用されます。
アロー関数の仕様
アロー関数の仕様としては次の通りです。
- 変数を値でバインドする
- "use" を使わずに親スコープの変数が使える
スコープ外の変数のバインドがポイントになっていますね。
下記の例では、アロー関数の親スコープで定義されている変数 $x は、無名関数で use($x) を実行している状況とほぼ同じことになります。
例
$x = 10; fn($a) => $a + $x;
なお、アロー関数では値でバインドしているため、アロー関数の外のスコープの変数の値は変更できません。アロー関数の外のスコープの値を変更したい場合は無名関数を使うと良いでしょう、。
アロー関数の使いどころ
アロー関数の使いどころとしては、array_mapなどのように引数に関数を受け取って処理を行うような場合に簡潔に表記したい場合などが挙げられます。 ただし、ロジックが複雑な場合は別途関数を定義して使用す流のが良いでしょう。