Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung für PHP-Hinweis: Es wird versucht, die Eigenschaft eines Nicht-Objekts abzurufen

Lösung für PHP-Hinweis: Es wird versucht, die Eigenschaft eines Nicht-Objekts abzurufen

WBOY
WBOYOriginal
2023-06-22 14:43:352866Durchsuche

PHP-Hinweis: Lösung für den Versuch, die Eigenschaft eines Nichtobjekts abzurufen

Beim Schreiben von Code in PHP kann die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen“ auftreten. Diese Fehlermeldung tritt normalerweise auf, weil wir versuchen, auf eine nicht vorhandene Objekteigenschaft zuzugreifen, was zu einem Fehler im Code führt.

Diese Fehlermeldung erscheint normalerweise in den folgenden Situationen:

  1. Das Objekt existiert nicht

Diese Fehlermeldung erscheint, wenn wir versuchen, auf eine Objekteigenschaft zuzugreifen, die nicht existiert. Zum Beispiel:

$foo = null;
echo $foo->bar;

In diesem Beispiel ist $foo ein Nullwert, es ist kein Objekt, daher können wir nicht auf seine Eigenschaften zugreifen.

Lösung:

Um diesen Fehler zu vermeiden, müssen wir sicherstellen, dass das Objekt bereits vorhanden sein muss, bevor wir auf seine Eigenschaften zugreifen können. Dies kann durch die Verwendung der Funktion isset() erreicht werden. Zum Beispiel:

if(isset($foo)){
    echo $foo->bar;
}

Wenn $foo nicht existiert, wird auf diese Weise nicht versucht, auf seine Eigenschaften zuzugreifen, wodurch dieser Fehler vermieden wird.

  1. Objekteigenschaft existiert nicht

Diese Fehlermeldung erscheint auch, wenn wir versuchen, auf eine Eigenschaft eines Objekts zuzugreifen, das nicht existiert. Zum Beispiel:

class foo {
    public $bar;
}

$foo = new foo();
echo $foo->baz;

In diesem Beispiel existiert das $foo-Objekt, aber es hat keine Eigenschaft namens „baz“, sodass wir nicht darauf zugreifen können.

Lösung:

Um diesen Fehler zu vermeiden, müssen wir sicherstellen, dass vor dem Zugriff auf die Eigenschaft eines Objekts die Eigenschaft bereits vorhanden sein muss. Wir können dem Code eine Beurteilung hinzufügen, um zu überprüfen, ob die Eigenschaft vorhanden ist, zum Beispiel:

class foo {
    public $bar;
}

$foo = new foo();
if(property_exists($foo, 'baz')) {
    echo $foo->baz;
}

Wenn das $foo-Objekt auf diese Weise keine Eigenschaft namens „baz“ hat, wird es nicht versuchen, darauf zuzugreifen, wodurch vermieden wird dieser Fehler.

  1. Objekteigenschaften werden nicht korrekt initialisiert

Eine andere Situation besteht darin, dass die Eigenschaften des Objekts zwar vorhanden sind, aber nicht korrekt initialisiert werden. Dies kann beim Versuch, auf die Eigenschaft zuzugreifen, zu der Fehlermeldung „Es wird versucht, eine Eigenschaft eines Nicht-Objekts abzurufen“ führen. Zum Beispiel:

class foo {
    public $bar;

    public function __construct() {
        $this->bar = new bar();
    }
}

class bar {
    public $baz;
}

$foo = new foo();
echo $foo->bar->baz;

In diesem Beispiel hat das $foo-Objekt eine Eigenschaft namens „bar“, aber es ist im Konstruktor nicht richtig initialisiert, sodass wir nicht auf seine „baz“-Eigenschaft zugreifen können.

Lösung:

Um diesen Fehler zu vermeiden, müssen wir sicherstellen, dass die Eigenschaft eines Objekts korrekt initialisiert wurde, bevor wir darauf zugreifen. Im obigen Beispiel können wir dem $foo-Objekt eine Initialisierungsfunktion hinzufügen, um sicherzustellen, dass die „bar“-Eigenschaft korrekt initialisiert wird:

class foo {
    public $bar;

    public function __construct() {
        $this->init();
    }

    private function init(){
        $this->bar = new bar();
    }
}

class bar {
    public $baz;
}

$foo = new foo();
echo $foo->bar->baz;

Wenn wir auf diese Weise versuchen, auf die „bar“-Eigenschaft des $foo-Objekts zuzugreifen, Es ist bereits ordnungsgemäß initialisiert und wir können erfolgreich auf die Eigenschaft „baz“ zugreifen, wodurch die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen“ vermieden wird.

Zusammenfassung:

Beim Schreiben von Code in PHP müssen wir darauf achten, die Fehlermeldung „Es wird versucht, die Eigenschaft eines Nichtobjekts abzurufen“ zu vermeiden. Wir müssen sicherstellen, dass vor dem Zugriff auf die Eigenschaften eines Objekts das Objekt bereits vorhanden ist und die Eigenschaften korrekt initialisiert wurden, um den Zugriff auf nicht vorhandene Eigenschaften zu vermeiden. Sie können die Funktionen isset() und property_exists() verwenden, um festzustellen, ob das Objekt und die Eigenschaften vorhanden sind, und eine Initialisierungsfunktion hinzufügen, um sicherzustellen, dass die Eigenschaften des Objekts korrekt initialisiert werden.

Das obige ist der detaillierte Inhalt vonLösung für PHP-Hinweis: Es wird versucht, die Eigenschaft eines Nicht-Objekts abzurufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn