436 Stimmen

Standardobjekt aus leerem Wert in PHP erstellen?

Ich sehe diesen Fehler erst, nachdem ich meine PHP-Umgebung auf PHP 5.4 und höher aktualisiert habe. Der Fehler bezieht sich auf diese Code-Zeile:

Fehler:

Standardobjekt aus leerem Wert erzeugen

Code:

$res->success = false;

Muss ich zunächst meine $res Objekt?

0voto

Tannin Punkte 65

Eine einfache Möglichkeit, diesen Fehler zu beheben, ist die Eingabe von (a), d. h. die Eingabe von (b)

(a) $this->my->variable

(b) $this->my_variable

Trivial, aber sehr leicht zu übersehen und schwer zu entdecken, wenn man nicht darauf achtet.

0voto

Anton Pelykh Punkte 1870

Möglicherweise müssen Sie prüfen, ob die Variable deklariert ist und den richtigen Typ hat.

if (!isset($res) || !is_object($res)) {
    $res = new \stdClass();
    // With php7 you also can create an object in several ways.
    // Object that implements some interface.
    $res = new class implements MyInterface {};
    // Object that extends some object.
    $res = new class extends MyClass {};
} 

$res->success = true;

Siehe Anonyme PHP-Klassen .

0voto

Fischer Tirado Punkte 191

Versuchen Sie es mit:

$user = (object) null;

0voto

Andy Punkte 303

Ich hatte ein ähnliches Problem, als ich versuchte, eine Variable zu einem Objekt hinzuzufügen, das von einer API zurückgegeben wurde. Ich habe die Daten mit einer foreach-Schleife durchlaufen.

foreach ( $results as $data ) {
    $data->direction = 0;
}

Dies löste die "Creating default object from empty value" Exception in Laravel aus.

Ich habe das Problem mit einer sehr kleinen Änderung behoben.

foreach ( $results as &$data ) {
    $data->direction = 0;
}

Indem man $data einfach zu einer Referenz macht.

Ich hoffe, das hilft jemandem, denn es hat mich verdammt geärgert!

0voto

Dies ist eine Warnung, mit der ich in PHP 7 konfrontiert wurde. Die einfache Lösung besteht darin, die Variable zu initialisieren, bevor sie verwendet wird

$myObj=new \stdClass();

Wenn Sie es einmal intialisiert haben, können Sie es für Objekte verwenden

 $myObj->mesg ="Welcome back - ".$c_user;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X