
こんにちは!福神漬けです。
欲しいものは好きなだけゲームをやっていい時間と体力です。
今回はPHPのアロー関数について書いていきます!
アロー関数とは
特にWEB系だとアロー関数という名前で有名なのがJavaScriptのアロー関数です。
ざっくりとした説明だと無名関数の書き方の一つで、既存の無名関数とも動作が変わります。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions
そしてPHPのアロー関数はJSより後に出ているのもあり書き方や役割が似ています。
似てはいますが微妙に使い勝手が違うのが気をつけるポイントです…
https://www.php.net/manual/ja/functions.arrow.php
マニュアルにあるとおり下記の関数二つは同じ動作をします。
$y = 1;
$fn1 = fn($x) => $x + $y;
$fn2 = function ($x) use ($y) {
return $x + $y;
};
どういう時便利か
JSと同じく簡単な処理をコールバックとして書くときにとても便利です。
$ary = [1,2,3,4,5];
$cutoffNum = 3;
$over3Ary = array_filter($ary,fn($v) => ($cutoffNum <= $v));
メリット
上記のようなシチュエーションで簡潔に書けます。
また大抵の場合use文を使うより可読性が上がります。
デメリット
逆にuse文を使わず変数が使えてしまうので、書こうと思えば変数10個くらい使った処理とかも書けてしまいます。
そんな読みづらいもの書くなという話ではありますが…
また関数の処理部分を1行しか書けずJSのアロー関数と比べて痒いところに手が届かないことがあります。
1行しか書けないので変なこと書きづらいという意図もある?かもしれませんが、
そもそもそういう人は1行に全部押し込みそうですね。
終わりに
今後のアップデートで複数行書けるようになりそうな雰囲気です!
そしたら使いやすくなりそうだなって思います。
https://zenn.dev/rana_kualu/articles/d03f1261ca879a32e6c2
お疲れ様でした!