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

Php 对象变为“;“非对象”;尝试访问方法或属性时,php,yii,Php,Yii,我在尝试为CraftCMS(基于YII框架的CMS)编写插件时遇到了一些问题。我试图创建一个简单的字段类型,我将在矩阵块中使用它。 到目前为止,我的fieldtype类的公共函数GetInPurtML只包含一个 var_dump($this->element) 正如预期的那样,它向我展示了: object(Craft\MatrixBlockModel)#1121 (25) { ["elementType":protected]=> string(11) "Matri

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

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()有关。但是,试着看看它的代码,它似乎不是这样的。

它很可能像你所建议的那样带有u调用。如果您执行以下操作,会发生什么情况:

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

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

我不确定,但它可以是var\u dump($this->element->getOwner)No。。。谢谢当然,getOwner()是一个方法。而且,不管怎样,如果我尝试将其作为属性调用,或者如果我调用该类不存在的方法或属性,我不会获得“属性/方法未定义”错误。。。我仍然获得“在非对象上调用成员函数xxx”或“尝试获取非对象的属性”。。。奇怪的是,使用$this->element的var_dump,它向我显示它是一个对象(MatrixBlockModel,正如预期的那样)。。。