業務でCodeIgniter4(CI4)を使っているのですが、同時にCI4のコード整形ツールを活用しています。
コード整形ツールの実態はphp-cs-fixerなのですが、コード整形された結果を眺めていると、ひとつ気になる挙動に気づきました。 一部の無名関数が、アロー関数へと置き換わっていたのです。
アロー関数とはなにか
おそらくJavaScript(JS)のアロー関数が、もっとも有名ではないかと思ってます。 JSでは、こんな感じのソースコードです。
// MDNより引用 const materials = [ 'Hydrogen', 'Helium', 'Lithium', 'Beryllium' ]; console.log(materials.map(material => material.length)); // expected output: Array [8, 6, 7, 9]
JavaScriptではアロー関数と普通の関数において、thisの扱いが異なるといった重要な違いがあるものの、端的に言えば短く書けるのが楽です。
PHPのアロー関数
PHPのアロー関数を実際にarray_mapで活用してみると、こんな感じの実装イメージになります。 どちらも結果としては同じで、2倍された数値が出力されます。
<?php // php test.php $arr = [1, 2, 3]; // 無名関数 var_dump(array_map(function ($v) { return $v * 2; }, $arr)); // アロー関数 var_dump(array_map(static fn ($v) => $v * 2, $arr));
# php test.php array(3) { [0]=> int(2) [1]=> int(4) [2]=> int(6) } array(3) { [0]=> int(2) [1]=> int(4) [2]=> int(6)
あとがき
PHPでもアロー関数が使えることはわかったのですが、まだ自分は違和感がありまして、書き方に慣れてはおりません。
JavaScriptのアロー関数は、this問題という重要な課題に対応するために覚えたのですが、PHPのアロー関数も書き続ければ、そのうち慣れるかもしれません。
基本的にはコード整形ツールに任せつつ、粛々とコードを書き続けていきたいと思います。