📔
PHP アロー関数が使用できるのはVer 7.4.0 ~
はじめに
アプリケーション層のサーバーにある記述を、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