2009-09-16 7 views
0

J'utilise les nouvelles classes de date (ish) de PHP pour un calendrier/planificateur que je développe. J'essaie de prolonger DateInterval afin que je limite l'intervalle à des tailles particulières comme 1 an, 1 mois, 1 semaine ou 1 jour. La classe étendue sera utilisée pour générer la vue du calendrier.extends DateInterval, erreur de propriété inconnue

Je reçois l'erreur PHP: Propriété inconnue (jours) lorsque j'exécute la méthode suivante.

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 
    }  
} 

Une idée pourquoi? Autant que le documentation semble suggérer, les «jours» devraient être valides.

+1

Désolé, ne peut pas aider, ne pas avoir une installation de PHP5.3 pour tester. Mais il est bien possible que les valeurs 'print_r()' soient des valeurs "readonly" qui sont générées à la volée. – soulmerge

Répondre

1

En fait, si vous regardez de plus près, DateInterval n'a vraiment pas de propriété de classe nommée 'days'. Ce sont des "pseudo-propriétés", comme les attributs d'un objet SimpleXML, et essayer d'étendre ces classes intégrées à partir du code utilisateur n'est pas un jeu d'enfant comme vous le souhaitez. Jetez un oeil à la classe de réflexion et its friends for help.

+0

Merci pour le pointeur. Je suis allé et j'ai regardé autour mais il n'y a pas beaucoup au-delà des signatures de la méthode. Connaissez-vous une bonne référence pour des exemples concrets (par opposition aux tests) d'utilisation de Reflection (ne doit pas être PHP)? Ma compréhension du pourquoi et du pourquoi de la Réflexion est au mieux faible. – dnagirl

Questions connexes