Heim >Backend-Entwicklung >PHP-Tutorial >Warum erhalte ich in PHP den Fehler „Schwerwiegender Fehler: Verwendung von $this, wenn nicht im Objektkontext'?

Warum erhalte ich in PHP den Fehler „Schwerwiegender Fehler: Verwendung von $this, wenn nicht im Objektkontext'?

Barbara Streisand
Barbara StreisandOriginal
2024-12-25 11:02:41208Durchsuche

Why Am I Getting the

Verwendung von $this in PHP-Klassen

Beim Versuch tritt der PHP-Fehler „Fatal error: Using $this when not in object context“ auf Greifen Sie auf das Schlüsselwort $this außerhalb einer Klassenmethode zu, die ein Objekt erfordert Instanz.

Erklärung

In PHP bezieht sich das Schlüsselwort $this auf die aktuelle Objektinstanz innerhalb einer Klassenmethode. Der Versuch, $this außerhalb eines Objektkontexts zu verwenden, beispielsweise in einer statischen Methode oder einem globalen Bereich, führt zu dem oben genannten Fehler.

Beispiel

Der bereitgestellte Code zeigt, wie der Fehler auftreten kann. In class.php versucht die Methode foobarfunc() fälschlicherweise, auf $this->foo() zuzugreifen, was nur innerhalb einer Objektinstanz gültig ist.

Lösung

Um den Fehler zu beheben, können Sie entweder:

  • Die Methode als statische Methode erstellen Methode:

    static public function foobarfunc() {
      return self::$foo;
    }

    Dies ermöglicht Ihnen den Zugriff auf die Methode über den Klassennamen anstelle einer Objektinstanz, z. B. foobar::foobarfunc().

  • Erstellen eine Objektinstanz und rufen Sie die foobarfunc()-Methode dafür auf Instanz:

    $foobar = new foobar;
    $result = $foobar->foobarfunc();

Denken Sie daran, dass statische Methoden direkt auf Klassenvariablen und -methoden zugreifen können, ohne dass eine Objektinstanz erforderlich ist, während für nicht statische Methoden zuerst eine bestimmte Objektinstanz erstellt werden muss .

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in PHP den Fehler „Schwerwiegender Fehler: Verwendung von $this, wenn nicht im Objektkontext'?. 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