【发布时间】:2018-11-07 14:29:04
【问题描述】:
我在Model1中有一个虚拟属性的方法/函数:
class Model1 {
public $virtattr;
public $_virtattr;
public function getVirtattr () {
if (isset($this->_virtattr)) {
return $this->_virtattr;
}
return $this->_virtattr = str_ireplace('x1', 'x2', $this->virtattr);
}
}
如何在Model2 中调用此方法以获得相同的结果?
我正在尝试这种方式,但不幸的是它不起作用,因为我得到的是空结果:
use Model1;
class Model2 {
public $virtattr;
public $_virtattr;
public function getVirtattr () {
return (new Model1)->getVirtattr();
}
}
你能指出正确的方向吗?
【问题讨论】:
-
Model1::getVirtattr();但你的方法也是正确的 -
但是我怎么会得到空的结果......?我不能使用
Model1::getVirtattr();,因为它不是静态的 -
您收到了什么,您希望收到什么?
-
为什么在定义 getVirtattr 函数的时候定义了 $virtattr 变量?
-
看来您需要学习一些 OOP 基础知识。您可能应该看一下特征:php.net/manual/en/language.oop5.traits.php
标签: php oop model yii2 virtual-attribute