我正在研究一个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
关于这个问题的任何建议都会很好。
答案 0 :(得分:2)
get_class函数要求参数为对象。该错误表示 $ mixedObject 是一个数组。
首先检查$ mixedObject是否为对象可能会有所帮助:
$debugObject->className = is_object($mixedObject) ? get_class($mixedObject) : '';
答案 1 :(得分:2)
您是否已经检查过“$ mixedObject”是否真的是一个对象? 因为错误确切地说它不是。
您可以检查给定的$ mixedObject是否为对象:
if (is_object($mixedObject)) {
$debugObject->className = get_class($mixedObject);
} else {
$debugObject->className = gettype($mixedObject);
}
编辑:我也看到一些其他错误,get_class返回一个字符串,所以你对该行的检查总是“真”(或因为你否定它而为假)然后将设置空字符串。 尝试上面的例子。
答案 2 :(得分:1)
期望传递一个对象,但是你将它设置为一个空字符串并在问号后面传递它。
答案 3 :(得分:0)
看起来你以$mixedObject
数组传递。
使用is_object
检查此var,然后使用gettype
(如果为false)或get_class
(如果为true)。