2017-06-02 66 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