2017-06-02 65 views
0

我是OOP和Yii2的新手。我在模型中功能:Yii2虛擬屬性獲取者必須更改爲函數調用

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

到現在爲止我已經用這樣的:

$model->datRev; 

,它會返回正確的值。現在我不知道發生了什麼變化呢,也許我還更新了框架,但舊的結構不工作了,爲了讓它工作,我必須將它更改爲:

​​

燦你請向我解釋爲什麼是這樣?

回答

0

當您嘗試獲取財產時,Yii2會調用魔術方法__get()。返回值取決於父類中此方法的實現。 Yii2可以檢查這個屬性是否存在於某個容器中,或者是否存在該屬性的getter。 在你的情況似乎你不會調用父母的方法__get()。這可能發生,因爲您覆蓋__get()方法或初始化此屬性。

+0

對不起,但我真的不明白... – user2511599

0

爲了使用短屬性語法($model->abc而不是$model->getAbc()),您的類需要擴展yii\base\Object(直接或不是)。魔術方法__get() @Timur提到的是在那裏定義的並且在yii\base\Component類中進一步擴展。

+0

我用giiant生成了我的模型,我絕對沒有改變這種基礎的東西。如果它之前是這樣的(因爲它工作正常),現在也是這樣。可能我已經改變了一些東西,但我不知道可能會導致這樣的結果。這太瘋狂了... – user2511599