【PHP】これで分かる関数! – アロー関数 –

PHP

更新履歴

更新日更新者更新内容
2021/8/18JJI・サンプルプログラムの実行結果に画面の画像を追加

アロー関数

アロー関数は無名関数を簡潔に書けるようにPHP7.4から導入されました。
構文は次の通りです。

 fn (argument_list) => expr

アロー関数は無名関数と同様な機能が使用できます。
ただし、次の点で無名関数とは異なっています。

  • 呼び出し元の変数が自由に使用できる
    無名関数で使用したuseキーワードはなくてもよい
  • アロー関数は複数行書くことができない
    今後のバージョンで対応する予定がある

サンプルプログラム

値渡しの無名関数と同じ動きになるサンプルプログラムです。
アロー関数の場合、関数の外から参照渡しで変数を渡すことはできません。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    echo "【PHP】関数<br>\n";
    echo "【引数】アロー関数<br>\n";

    // 加算する値
    $add_num = 5;

    // 無名関数
    $call_noname_func = function(int $num) use($add_num) :int {
        return $num + $add_num;
    };

    // アロー関数
    $call_arrow_func = fn(int $num) :int => $num + $add_num;

    // 無名関数の呼び出し
    echo "無名関数:" . $call_noname_func(11) . ":<br>\n";

    // アロー関数の呼び出し
    echo "アロー関数:" . $call_arrow_func(12) . ":<br>\n";

    // 関数外の変数も変更しても変わらない
    $add_num = 7;
    echo "アロー関数:" . $call_arrow_func(12) . ":<br>\n";
?>

実行結果は次の通りです。

・画面

・HTML

【PHP】関数<br>
【引数】アロー関数<br>
無名関数:16:<br>
アロー関数:17:<br>
アロー関数:17:<br>

コメント