2017-06-02 3 views
0

Je suis nouveau à OOP et Yii2. J'ai une fonction dans le modèle:Yii2 getter attribut virtuel a dû changer pour appeler la fonction

public function getDatRev() { 
    if ($this->rev) { 
     return $this->rev; 
    } else { 
     return $this->datum; 
    } 
} 

dans le View jusqu'à présent, je l'ai utilisé comme ceci:

$model->datRev; 

et ce serait retourner la valeur correcte. Maintenant, je ne sais pas ce qui a changé, peut-être je aussi mis à jour le cadre, mais l'ancienne construction fait, et pour le faire fonctionner je ne travaille plus à changer pour:

$model->getDatRev(); 

Can vous s'il vous plaît expliquez-moi pourquoi c'est?

Répondre

0

Lorsque vous essayez d'obtenir la propriété, la méthode magique Yii2 appelle __get(). La valeur de retour dépend de l'implémentation de cette méthode dans la classe parent. Yii2 peut vérifier si cette propriété existe dans un conteneur ou s'il existe getter de cette propriété. Dans votre cas semble que vous n'appelez pas la méthode parente __get(). Cela est peut-être dû au fait que vous avez ignoré la méthode __get() ou initialisé cette propriété.

+0

désolé mais je ne comprends pas vraiment l'image ... – user2511599

0

Votre classe doit étendre yii\base\Object (directement ou non) afin d'utiliser la syntaxe de propriété courte ($model->abc au lieu de $model->getAbc()). La méthode magique __get() @Timur mentionnée est définie ici et étendue dans la classe yii\base\Component.

+0

J'ai généré mes modèles avec giiant et je n'ai certainement pas changé de telles choses de base. Si c'était comme ça avant (parce que ça fonctionnait), c'est aussi comme ça maintenant. J'ai probablement changé quelque chose, mais je n'ai aucune idée de ce qui pourrait en résulter. C'est fou... – user2511599