2

我正在做一个 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

关于这个问题的任何建议都会很好。

4

4 回答 4

3

get_class函数要求参数是一个对象。该错误表明$mixedObject是一个数组。

首先检查 $mixedObject 是否是一个对象可能会有所帮助:

$debugObject->className = is_object($mixedObject) ? get_class($mixedObject) : '';
于 2010-05-20T09:52:50.493 回答
2

您是否已经检查过“$mixedObject”是否真的是一个对象?因为错误确切地说它不是。

您可以检查给定的 $mixedObject 是否为对象:

if (is_object($mixedObject)) { 
    $debugObject->className   = get_class($mixedObject);
} else {
    $debugObject->className   = gettype($mixedObject);
}

编辑:我还看到一些其他错误,get_class 返回一个字符串,因此您对该行的检查将始终为“true”(或 false,因为您正在否定它),然后将设置空字符串。像上面的例子一样试试。

于 2010-05-20T09:53:36.323 回答
1

它期望传递一个对象,但您将其设置为空字符串并在问号之后传递它。

于 2010-05-20T09:53:51.603 回答
1

看起来您作为$mixedObject数组传递。

检查这个变量,is_object然后使用gettype(如果为假)或get_class(如果为真)。

于 2010-05-20T09:55:28.487 回答