Get_class ile PHP sorun

4 Cevap php

Zend proje üzerinde çalışıyorum ve benim işlevlerinden biri üzerinde bir hata alıyorum, ve ben neden çalışmak değil, Zend dokundu beri üzerinde de 12 ay geçti, ben aslen inşa ediliyor aşağı siteye olabilir düşünüyorum PHP önceki bir sürümünde (5.2) ve ben şimdi 5.3 kullanıyorum.

Işlevi bu gibi görünüyor,

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);
    }

Aşağıdaki gibi bir hata mesajı olduğunu

get_class() expects parameter 1 to be object, array given in /server/app/lib/View.php on line 449

Konuyla ilgili herhangi bir tavsiye iyi olurdu.

4 Cevap

get_class fonksiyonu bir nesne olarak bir parametre gerektiriyor. Hata $mixedObject bir dizi olduğunu söylüyor.

Bu $ mixedObject önce nesne olup olmadığını kontrol etmek için yardımcı olabilir:

$debugObject->className = is_object($mixedObject) ? get_class($mixedObject) : '';

Have you already checked if "$mixedObject" is really an object? Because the error exactly says that it is not.

Verilen $ mixedObject bir nesne olup olmadığını bir kontrol koymak olabilir:

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

Edit: I also see some other error, the get_class returns a string so your check on that line would always be "true" (or false because you are negating it) and then empty string would be set. Try it like the example above.

Bu bir nesne geçti bekliyor ama boş bir dize olarak ayarlama ve soru işaretinden sonra bunu geçiyoruz.

Eğer $mixedObject bir dizi olarak geçmesi gibi görünüyor.

is_object and then use gettype (false) veya get_class (eğer doğruysa) bu VAR edin.