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

时间:2014-08-04 16:29:57

标签: php yii

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

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()"

我认为唯一的想法是它可能与在MatrixBlockModel继承的类中覆盖的魔术方法__call()有关(实际上是父级父级的父级...)。但是,试着看看它的代码,它似乎并非如此。

1 个答案:

答案 0 :(得分:0)

根据你的建议,这可能与__call有关。如果您这样做会发生什么:

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

如果您将其分配给可能解决问题的临时变量,我有一种预感。