PHP Fehlermeldung Warning: Undefined property: stdClass::$data

Bumblebee_3rd

Ensign
Registriert
Jan. 2018
Beiträge
134
Hallo zusammen,

ich habe eine eigene Homepage via Wordpress hochgezogen und verwende deshalb auch einige Templates. Seit kurzem bekomme ich folgende Fehlermeldung:

Warning: Undefined property: stdClass::$data in /home/www/.../.../themes/photography/lib/custom.lib.php on line 1852

Der betroffene Code-Abschnitt: Zeile 1852 ist Zeile 3 im unteren Abschnitt


PHP:
//var_dump($response);
        $response_decode = json_decode( wp_remote_retrieve_body( $response ) );
        $result_photos = $response_decode->data;
   
        if(is_array($result_photos) && !empty($result_photos))
        {
            foreach ($result_photos as $key => $item)
            {
                if($item->media_type != 'VIDEO') {
                    $small_thumb_url = $item->permalink.'media?size=t';
                    $thumb_url = $item->permalink.'media?size=m';
                    $large_url = $item->permalink.'media?size=l';
                   
                    $photos_arr[] = array(
                        'thumb_url' => $thumb_url,
                        'small_thumb_url' => $small_thumb_url,
                        'original_url' => $item->media_url,
                        'url' => $large_url,
                        'link' => $item->permalink,
                    );
                }
            }
        }

Ich habe aber an diesem Code nichts verändert. Könnt ihr mir hier vielleicht helfen, dass ich diese Warnung wegbekomme? PHP zählt jetzt auch nicht zu meinen stärksten Sprachen.

Viele Grüße
Bumblebee_3rd
 
Du solltest $response_decode debuggen, nicht $response, da data nicht existiert.
 
@sandreas Dein Code kann genau zu dem gleichen Problem führen. Du prüfst nur, ob $response_decode einen Inhalt hat und nicht ob $response_decode->data existiert.
 
Vielen Dank für eure Antworten. Ich habs jetzt mal so gelöst, dass ich schreibe
Code:
 $result_photos = @$response_decode->data;
 
Bumblebee_3rd schrieb:
Ich habs jetzt mal so gelöst, dass ich schreibe
Das ist nicht gut. @ unterdrückt Fehler einfach und führt im ungünstigsten Fall dazu, dass ein Fehler auftritt, es an anderer Stelle zu einem weiteren Fehler führt und du dir (und sonst auch niemand) überhaupt keinen Reim mehr drauf machen kannst, wo der Fehler her kommt...

Du solltest @ bestenfalls grundsätzlich vermeiden, auch wenn es höheren Aufwand bedeutet.
 
  • Gefällt mir
Reaktionen: Kontrollfreak
So ist es. Der @-Operator wurde in PHP 8 zwar entschärft, so dass fatale Fehler nicht mehr unterdrückt werden. Aber alle andere Fehler im zugrundeliegenden Callstack werden immer noch verworfen.

In deinem Fall würde ich den ??-Operator empfehlen:
PHP:
$result_photos = $response_decode->data ?? [];
Wenn data nicht existiert, wird ein leeres Array erzeugt.
 
  • Gefällt mir
Reaktionen: lasbo und floq0r
Zurück
Oben