我在模块CMap.php中的代码中有这一行,它是yii框架的一部分,它应该计算数组_d
中元素的数量。
return count($this->_d);
但如果_d
是array[0]
,则会引发错误:
尝试获取非对象的属性
使用与我们的网络服务器上安装的版本相同的PHP v5.3.3(x86)。
知道为什么会这样吗?感谢。
编辑: 将代码更改为:
try {
return null;
if ($this->_d==null)
return null;
else {
if(isset($this->_d[$key]))
return $this->_d[$key];
else
return null;
}
}
catch (Exception $e) {
return null;
}
如果没有输入return null;
块,它仍会在第一个catch()
行引发错误。
答案 0 :(得分:3)
让我们分解错误信息:
试图获得财产
A"属性"是一个对象的领域,"属性访问"是你用->
运算符做的。在您的情况下,$this->_d
。
非对象
在表达式$this->_d
中,我们会说" _d
是$this
"的属性。所以"非对象"表示->
运算符的 left 上的内容不是对象。
所以假设您发布的代码是准确的,并且没有匿名到隐藏真实错误的位置,那么您的问题是$this
是不是该部分代码中的对象。
请注意,这与$this->_d
为空数组的说法相矛盾,因为如果$this
不是对象,则$this->_d
不存在。所以我强烈怀疑你是在寻找错误的地方,或者你曾试图简化描述,但错过了重要的细节。
答案 1 :(得分:0)
好的,我现在要关闭这个帖子。
我的OP中发布的代码没有错误,并且没有导致错误。
完成红鲱鱼。发生的事情是在此方法之后运行的代码(调用此方法的代码)抛出了错误,但由于某种原因,代码没有显示在我的调试器中。我无法逐步完成它。
我看到的第一个调试是在ErrorHandler中的断点被击中时。
我将就YII框架如何/为何如此做出一个单独的问题。
感谢您的评论。