PHP Carbonを使って現在時刻を固定する
メモ。
ちゃんとテストを書けばよいのだけど、ちゃちゃっと動作テストをしたい時に。
例えば、ある処理の間だけCarbon::now()を任意の時刻に固定したい。
Carbon::setTestNow()
に引数を渡すと任意の時刻で固定できる。
引数なしで呼ぶとリセットされる。
事前準備
$ composer require nesbot/carbon
// 必要があればMonologやDebugbarを入れると良い
$ composer require monolog/monolog
$ composer require maximebf/debugbar
サンプルコード
index.php
<?php
require 'vendor/autoload.php';
use Carbon\Carbon;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use DebugBar\StandardDebugBar;
$debugbar = new StandardDebugBar();
$debugbarRenderer = $debugbar->getJavascriptRenderer();
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler('./debug.log', Logger::INFO));
Carbon::setTestNow(Carbon::parse('2019-05-20 00:00:00'));
$logger->info(Carbon::now());
Carbon::setTestNow();
$logger->info(Carbon::now());
Carbon::setTestNow(Carbon::parse('2019-05-01 00:00:00'));
$debugbar['messages']->addMessage('Now is ' . Carbon::now()->toDateTimeString());
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>テスト</title>
<?= $debugbarRenderer->renderHead(); ?>
</head>
<body>
<?= $debugbarRenderer->render(); ?>
</body>
</html>
実行
$ php index.php
or
$ php -S localhost:8000
$ open http://localhost:8000 # ブラウザアクセス
実行結果
ログ
debug.txt
[2019-05-18 01:59:49] my_logger.INFO: 2019-05-20 00:00:00 [] []
[2019-05-18 01:59:49] my_logger.INFO: 2019-05-18 01:59:49 [] []
ブラウザ
Author And Source
この問題について(PHP Carbonを使って現在時刻を固定する), 我々は、より多くの情報をここで見つけました https://qiita.com/rinkun/items/9633d347acd758677225著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .