[PHP]一度指定したCarbon::setTestNow()を無効化したい場合

カテゴリ: 未分類

PHPのCarbonライブラリではsetTestNow()で現在時刻を改竄することができます。
これはPHPUnitなどのテスト時に便利なのですが、場合によっては一度セットしたのち再度無効化したい場合があります。

この場合、setTestNow()の引数にnullをセットすれば良いです。

動作例

\Log::info(Carbon::now());      // 2020-03-29 01:44:04


// 時間を未来にする
Carbon::setTestNow(Carbon::now()->addHour(12));
\Log::info(Carbon::now());      // 2020-03-29 13:44:04 (12Hr進めたので13時が返る)
sleep(3);
\Log::info(Carbon::now());      // 2020-03-29 13:44:04 (固定時刻をセットしたのでsleepしても時間は変わらない)


// 時間を変更する
Carbon::setTestNow(Carbon::now()->addHour(-12));
\Log::info(Carbon::now())      // 2020-03-29 01:44:04   (12Hr戻したので 01:44:04に戻った)
sleep(3);
\Log::info(Carbon::now())      // 2020-03-29 01:44:04  (sleepしても時間は変わらない)


// 時間を現在時刻にする
Carbon::setTestNow(null);
\Log::info(Carbon::now());     // 2020-03-29 01:44:10   (現在時刻に戻したの01:44:04+6秒で 01:44:10が返る)
sleep(3);
\Log::info(Carbon::now());     // 2020-03-29 01:44:13   (3秒スリープしたので、3秒後が返る)
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。