繁体   English   中英

PHP问题与get_class

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM