2015-06-12 2 views
0

Я использую библиотеку PHP Carbon в своем приложении Laravel 4. Я успешно расширил класс \ Carbon \ Carbon в свой собственный класс \ Extensions \ Carbon. Мой новый файл класса содержит следующее:Метод не работает, как ожидается при расширении PHP-класса

<?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 дня? Если я сделаю то же самое с использованием исходного класса углерода, он будет работать правильно:

[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' 
//) 

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

ответ

0

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

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