[英]PHP issue with get_class
我正在做一个Zend项目,距接触Zend已有12个月了,我的一个功能出现错误,我无法弄清楚为什么,我认为这可能取决于最初构建的站点在早期版本的PHP(5.2)中,我现在正在运行5.3。
该函数看起来像这样,
public function addDebug($mixedObject, $title = "")
{
$debugObject = new stdClass();
$debugObject->title = $title;
$debugObject->type = gettype($mixedObject);
$debugObject->className = (!get_class($mixedObject)) ? "" : gettype($mixedObject);<-- Line error is complaining about -->
$debugObject->mixedObject = $mixedObject;
array_push($this->debugArr, $debugObject);
}
错误消息如下,
get_class() expects parameter 1 to be object, array given in /server/app/lib/View.php on line 449
关于这个问题的任何建议都是很好的。
get_class函数要求参数为对象。 该错误表明$ mixedObject是一个数组。
首先检查$ mixedObject是否是一个对象可能会有所帮助:
$debugObject->className = is_object($mixedObject) ? get_class($mixedObject) : '';
您是否已经检查过“ $ mixedObject”是否真的是一个对象? 因为错误恰恰说明不是。
您可以检查给定的$ mixedObject是否为对象:
if (is_object($mixedObject)) {
$debugObject->className = get_class($mixedObject);
} else {
$debugObject->className = gettype($mixedObject);
}
编辑:我也看到一些其他错误,get_class返回一个字符串,因此您对该行的检查将始终为“ true”(或false,因为您要否定它),然后将设置空字符串。 像上面的例子一样尝试。
期望传递一个对象,但是您将其设置为空字符串,并将其传递到问号之后。
好像您将$mixedObject
作为数组传递。
使用is_object
检查此var,然后使用gettype
(如果为false)或get_class
(如果为true)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.