Проблема PHP с get_class - PullRequest
       60

Проблема PHP с get_class

2 голосов
/ 20 мая 2010

Я работаю над проектом Zend, и прошло уже более 12 месяцев с тех пор, как я коснулся Zend, у меня появляется ошибка по одной из моих функций, и я не могу понять, почему, я думаю, что это может быть до сайта изначально был построен в более ранней версии 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 ]

2 голосов
/ 20 мая 2010

Вы уже проверили, действительно ли объект $ mixedObject является объектом? Потому что ошибка точно говорит, что это не так.

Вы можете поставить проверку, является ли данный $ mixedObject объектом или нет:

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

Edit: я также вижу некоторую другую ошибку, get_class возвращает строку, поэтому ваша проверка в этой строке всегда будет "true" (или false, потому что вы отрицаете ее), и тогда будет установлена ​​пустая строка. Попробуйте, как в примере выше.

2 голосов
/ 20 мая 2010

Функция get_class требует, чтобы параметр был объектом. Ошибка говорит, что $ mixedObject является массивом.

Может помочь проверить, является ли объект $ mixedObject первым:

$debugObject->className = is_object($mixedObject) ? get_class($mixedObject) : '';
1 голос
/ 20 мая 2010

Ожидается, что объект пройден, но вы устанавливаете его как пустую строку и передаете его после знака вопроса.

0 голосов
/ 20 мая 2010

Похоже, вы передаете как $mixedObject массив.

Проверьте эту переменную с помощью is_object, а затем используйте gettype (если false) или get_class (если true).

...