Как создать свойство days в классе расширений DateInterval - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу расширить класс DateInterval, чтобы добавить свои собственные методы. Для этого я хочу создать экземпляр класса расширения DateIntervalEx из объекта DateInterval. Пример:

$dateInterval = date_create('yesterday')->diff(date_create('today 13:24'));

$diEx = new DateIntervalEx($dateInterval);

Моя попытка для класса:

class DateIntervalEx extends Dateinterval{
  public function __construct(DateInterval $interval){
    parent::__construct('P0D');

    foreach($interval as $prop => $value){
      $this->$prop = $value;
    }
  }
}

Метод diff возвращает DateInterval с днями => 1

DateInterval::__set_state(array(
   'y' => 0,
   'm' => 0,
   'd' => 1,
   'h' => 13,
   'i' => 24,
   's' => 0,
   'f' => 0.0,
   'weekday' => 0,
   'weekday_behavior' => 0,
   'first_last_day_of' => 0,
   'invert' => 0,
   'days' => 1,
   'special_type' => 0,
   'special_amount' => 0,
   'have_weekday_relative' => 0,
   'have_special_relative' => 0,
))

Но мое расширение класс возвращает days => false.

DateIntervalEx::__set_state(array(
   'weekday' => 0,
   'weekday_behavior' => 0,
   'first_last_day_of' => 0,
   'days' => false,
   'special_type' => 0,
   'special_amount' => 0,
   'have_weekday_relative' => 0,
   'have_special_relative' => 0,
   'y' => 0,
   'm' => 0,
   'd' => 1,
   'h' => 13,
   'i' => 24,
   's' => 0,
   'f' => 0.0,
   'invert' => 0,
))

Как установить для свойства days правильное значение?

Есть ли решение проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...