PHP - uyarı - Tanımsız özellik: stdClass - düzeltebilirim?

5 Cevap php

Benim hata günlüklerine bu uyarıyı almak ve benim kod bu sorunları düzeltmek için bilmek istedim.

Warning: PHP Notice: Undefined property: stdClass::$records in script.php on line 440

Bazı Kodu:

// Parse object to get account id's
// The response doesn't have the records attribute sometimes.
$role_arr = getRole($response->records);  // Line 440 

Kayıtlar varsa yanıtı ise

stdClass Object
(
    [done] => 1
    [queryLocator] =>
    [records] => Array
        (
            [0] => stdClass Object
                (
                    [type] => User
                    [Id] =>
                    [any] => stdClass Object
                        (
                            [type] => My Role
                            [Id] =>
                            [any] => <sf:Name>My Name</sf:Name>
                        )

                )

        )

    [size] => 1
)

Tepki kayıtlar yoksa

stdClass Object
(
    [done] => 1
    [queryLocator] =>
    [size] => 0
)

Ben bir şey, array_key_exists gibi bir şey () işlevi düşünüyor ama nesneler için oldu? ya da bu konuda yanlış şekilde gidiyorum?

5 Cevap

Eğer kullanmak istiyorsanız property_exists, sen get_class() ile sınıfın adını almak gerekir

Bu durumda olacaktır:

 if( property_exists( get_class($response), 'records' ) ){
       $role_arr = getRole($response->records);
 }
 else
 {
       ...
 }

Yanıtı kendisi kayıtların boyutu var gibi görünüyor. Sen kayıtları olmadığını denetlemek için kullanabilirsiniz. Gibi bir şey:

if($response->size > 0){
    $role_arr = getRole($response->records);
}

Bu durumda, ben kullanmak istiyorum:

if (!empty($response->records)) {
 // do something
}

Özellik yoksa herhangi bir çirkin bildirimleri almazsınız, ve aslında, yani çalışmak için bazı kayıtlar var bileceksiniz. $ Tepki> kayıtları boş bir dizi, null, YANLIŞ ya da başka herhangi bir boş değerler değildir.

Eğer bir üye ya da yöntem arıyorsanız bağlı olarak, bir üye / yöntem, belirli bir nesne olup olmadığını görmek için bu iki işlevlerden birini kullanabilirsiniz:

http://php.net/manual/en/function.method-exists.php

http://php.net/manual/en/function.property-exists.php

Hepsi istiyorsanız daha genel eğer:

http://php.net/manual/en/function.get-object-vars.php

Bu çalışacağını düşünüyorsanız:

if(sizeof($response->records)>0)
$role_arr = getRole($response->records);

Yeni tanımlanan proprties da dahil.