📔

PHP アロー関数が使用できるのはVer 7.4.0 ~

2022/06/04に公開

はじめに

アプリケーション層のサーバーにある記述を、APIとして切り離し、別のサーバーでLaraavelの記述をしている時にエラーが発生しました。
原因は表題の通りでした。詳細を記述します。

例文

$users = collect($allMembers->users)
->filter(fn($x) => collect($x->->work_schedules ?? [])

例えば上記のような記述、
Laravelのcollectヘルパ関数により、データをCollectionクラスに変更することで、データ操作をしやすくし、fillerヘルパ関数により、内容に合うデータのみ抽出して、変数usersに入れる処理。

よく見るような見ないような記述、ヘルパー関数というものが使われているのだな、と思ってました。

エラー発生

これを別サーバーで構築されたシステムに記述をまるっと写した際にエラー発生。
ログを見ると、

syntax error, unexpected '$x' (T_VARIABLE), expecting ')',

え、どこで記述間違っているんだろう、、同じ記述しているのに、、。

原因発覚

もしやバージョンの違いか?と思ってアロー関数を調べたところ、
アロー関数が適用されているのがVer7.4.0からとのこと。
両サーバーのPHPのバージョンを確認したところ、

元々記述があったサーバーのPHP Ver 7.4.0
転機したサーバーのPHP Ver 7.3.9

完全にバージョンの違いによるエラーでした。

ちなみに、PHP Ver 7.4系の初回リリースは、2019/11/28
結構前にリリースされている。

よって、アロー関数から無名関数に変更しました。

さいごに

PHPのバージョンがまさか異なるとは思っていなかった思考ロック状態、良くないですね。

Discussion