0

Laravel 4 アプリケーションでPHP Carbonライブラリを使用しています。\Carbon\Carbon クラスを独自の \Extensions\Carbon クラスに拡張することに成功しました。新しいクラス ファイルには次のものが含まれます。

<?php namespace Extensions;

class Carbon extends \Carbon\Carbon {


        public function __construct()
        {
                parent::__construct();
        }

}

このクラスを使用してオブジェクトを作成できるようになったため、これは正しく機能しているようです。ただし、copy()メソッドを使用しようとすると、奇妙なことがわかります。

[1] > $dt = new \Extensions\Carbon;
// object(Extensions\Carbon)(
//   'date' => '2015-06-12 20:14:45',
//   'timezone_type' => 3,
//   'timezone' => 'UTC'
// )
[2] > $dt->addDays(2);
// object(Extensions\Carbon)(
//   'date' => '2015-06-14 20:14:45',
//   'timezone_type' => 3,
//   'timezone' => 'UTC'
// )
[3] > $dt->copy();
// object(Extensions\Carbon)(
//   'date' => '2015-06-12 20:14:54',
//   'timezone_type' => 3,
//   'timezone' => 'UTC'
// )

copyメソッドが 2 日を加算する前の日付の値を出力するのはなぜですか? 元の Carbon クラスを使用してこれと同じことを行うと、正しく動作します。

[1] > $dt = new Carbon\Carbon;
// object(Carbon\Carbon)(
//   'date' => '2015-06-12 20:22:51',
//   'timezone_type' => 3,
//   'timezone' => 'UTC'
// )
[2] > $dt->addDays(2);
// object(Carbon\Carbon)(
//   'date' => '2015-06-14 20:22:51',
//   'timezone_type' => 3,
//   'timezone' => 'UTC'
// )
[3] > $dt->copy();
// object(Carbon\Carbon)(
//   'date' => '2015-06-14 20:22:51',
//   'timezone_type' => 3,
//   'timezone' => 'UTC'
// )

何がこの動作を引き起こす可能性がありますか?

4

1 に答える 1

0

適切なコンストラクターを使用していなかったようです。これは期待どおりに機能します。

public function __construct($time = null, $tz = null)
{
    parent::__construct($time, $tz);
}
于 2015-06-12T21:56:13.573 に答える