はじめに
PHP 7.4からアロー関数が使えるようになりました🥳
これで、PHPをJavaScript風に書けるようになりますねー
実行バージョン
$ php -v
PHP 8.0.2 (cli) (built: Feb 4 2021 18:01:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.2, Copyright (c) Zend Technologies
with Zend OPcache v8.0.2, Copyright (c), by Zend Technologies
アロー関数とは
アロー関数は 無名関数 を簡潔に書ける文法として PHP 7.4 で追加されました。
公式より
php
// 今まで
$calc = function($x,$y) {return $x+$y;};
// アロー関数
$calc = fn($x,$y) => $x+$y;
今まではクロージャーで関数を定義する場合、function
とreturn
を書く必要がありましたが、アロー関数で記載することで、function
→fn
にして、return
を省略することができます。
アロー関数で書いた方がスッキリ🐿
できない書き方
php
$calc = fn($x) => {$x};
// PHP Parse error: syntax error, unexpected token "{"
$calc = fn($x) => return x;
// PHP Parse error: syntax error, unexpected token "return"
$calc = fn($x) => {
$y = 2;
return $x+$y+;
};
// PHP Parse error: syntax error, unexpected token "{"
return
, {
を書くと怒られます。また、複数行で記述することもできません。。
JavaScriptはできるのに。。
コールバック関数として使用
php
$arr = [1,2];
$res = array_map(fn($n) => $n*$n, $arr);
// array(2) {
// [0]=>
// int(1)
// [1]=>
// int(4)
// }
$res = array_filter($arr, fn($n) => $n === 1);
// array(1) {
// [0]=>
// int(1)
// }
もちろんコールバック関数でも使うことができます。
最後に
私はこの書き方を結構気に入っています!若干、JavaScriptと書き味が違うので気をつけてください。親のスコープの変数を参照できる等、少し癖があるので、公式を読んでから使うようにしてください!