Метод не работает должным образом при расширении класса PHP

Я использую библиотеку PHP Carbon в своем приложении Laravel 4. Я успешно расширил класс \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'
// )

Любая идея, что может вызвать такое поведение?


person flyingL123    schedule 12.06.2015    source источник


Ответы (1)


Похоже, я не использовал правильный конструктор. Это работает так, как ожидалось:

public function __construct($time = null, $tz = null)
{
    parent::__construct($time, $tz);
}
person flyingL123    schedule 12.06.2015