LoginSignup
10
3

More than 3 years have passed since last update.

【PHP】アロー関数入門

Last updated at Posted at 2021-03-06

はじめに

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;

今まではクロージャーで関数を定義する場合、functionreturnを書く必要がありましたが、アロー関数で記載することで、functionfnにして、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と書き味が違うので気をつけてください。親のスコープの変数を参照できる等、少し癖があるので、公式を読んでから使うようにしてください!

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3