对象变成“非对象”在尝试访问方法或属性时


Object become "non object" when trying to access methods or properties

我在尝试为CraftCMS(基于YII框架的CMS)编写插件时遇到了一些麻烦。我试图创建一个简单的字段类型,我要在一个矩阵块内使用。到目前为止,我的字段类型类的公共函数getinputhhtml只包含一个

var_dump($this->element)

它显示了我,如预期的:

object(Craft'MatrixBlockModel)#1121 (25) {
  ["elementType":protected]=>
  string(11) "MatrixBlock" [.......]

问题是,当我试图改变前面的

var_dump($this->element)

var_dump($this->element->getOwner())

(或MatrixBlockModel类的任何其他方法/属性),我获得:

"在非对象上调用成员函数getOwner() "

我唯一的想法是,它可能与神奇的方法__call()有关,覆盖在MatrixBlockModel继承的类中(实际上,父的父的父…)。但是,试着看一下它的代码,它似乎不是这样的。

很可能是你建议的__call。如果您这样做会发生什么:

$var = $this->element;
var_dump($var);
var_dump($var->getOwner());

我有一种预感,如果你把它分配给一个临时变量,可能会解决这个问题。