サンク
引数がない関数のこと。特に、処理を遅延評価するためにクロージャで包んで渡す目的で用いるもの。 たとえば、「現在時刻を出力する」と「固定の値を出力する」という2種類の動作を同列に扱いたいとする
code:php
if ($act_name === 'now') {
} elseif ($act_name === 'system_name') {
}
// 時間がかかる長大な処理
emit(json_encode($action));
上記のように書くのはもちろん問題がある
emit()するタイミングではなく、その前のタイミングの現在時刻が出力されてしまう
時差が1秒未満なら気にする人も少ないだろうが、「長大な処理」が数時間、数日だったどうだろう
世の中には早い時刻を記録したいという要件もあろうが、ここではそれでは困るということにする
とても楽なアイディアがある。関数でくるんでやればいい
つまりこうする
code:php
if ($act_name === 'now') {
} elseif ($act_name === 'system_name') {
}
// 時間がかかる長大な処理
emit(json_encode($action()));
変更点はふたつ
$action = を $action = fn() => にする
json_encode($action) を json_encode($action()) にする
たったこれだけの変更で処理を先送りすることができる
参考資料