расширение DateInterval, неизвестная ошибка свойства - PullRequest
0 голосов
/ 17 сентября 2009

Я использую новые классы даты PHP (ish) для календаря / планировщика, который я разрабатываю. Я пытаюсь расширить DateInterval, чтобы ограничить интервал определенными размерами, такими как 1 год, 1 месяц, 1 неделя или 1 день. Расширенный класс будет использоваться для создания представления календаря.

Я получаю сообщение об ошибке PHP: неизвестное свойство (дни), когда я запускаю следующий метод.

private function adjust(){

     //to zero all the DateInterval properties except the one I want
    $adjustments = array ('y'=>0, 'm'=>0, 'd'=>0, 
                           'h'=>0, 'i'=>0, 's'=>0, 
                           'invert'=>0, 'days'=>0); 


    if($this->y>=1 || $this->days>180){
        $adjustments['y']=1; //1 year
    } else if ($this->m>6){
        $adjustments['y']=1; //1 year
    } else if ($this->m>=1){
        $adjustments['m']=$this->m; //multiple months less than 6
    } else if ($this->d>7){
        $adjustments['m']=1; //1 month
    } else if ($this->d>1){
        $adjustments['d']=7; //1 week
    } else {
        $adjustments['d']=1; //1 day
    }

    foreach($adjustments as $k=>$v){
        $this->$k=$v; //reset all the class properties
    }       
}

Есть идеи, почему? Что касается документации , то 'дни' должны быть действительными.

1 Ответ

1 голос
/ 17 сентября 2009

На самом деле, если вы посмотрите более внимательно, DateInterval действительно не имеет свойства класса с именем 'days'. Это «псевдо-свойства», такие как атрибуты объекта SimpleXML, и попытка расширить эти встроенные классы из пользовательского кода не так проста, как хотелось бы. Взгляните на класс Reflection и его друзей за помощью .

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