Heim >Backend-Entwicklung >PHP-Tutorial >Warum erhalte ich einen schwerwiegenden PHP-Fehler: „$this wird verwendet, wenn nicht im Objektkontext'?

Warum erhalte ich einen schwerwiegenden PHP-Fehler: „$this wird verwendet, wenn nicht im Objektkontext'?

DDD
DDDOriginal
2024-12-15 02:56:17726Durchsuche

Why Am I Getting a PHP Fatal Error:

Verwendung von $this außerhalb des Objektbereichs: Schwerwiegender PHP-Fehler erklärt

Der schwerwiegende PHP-Fehler „Verwendung von $this, wenn nicht im Objektkontext“ tritt auf beim Versuch, auf das Schlüsselwort $this in einem Nicht-Objekt-Kontext zuzugreifen. Das Schlüsselwort $this stellt die aktuelle Objektinstanz dar und kann nur im Rahmen der Methode oder Eigenschaft eines Objekts verwendet werden.

Betrachten Sie das in der Frage bereitgestellte Beispielszenario, bei dem der Fehler in der Datei class.php auftritt. Die Zeile, die den Fehler verursacht, ist:

$this->foo = $foo;

Diese Zeile weist den Wert der globalen Variablen $foo der foo-Eigenschaft des aktuellen Objekts zu. Der Fehler wird jedoch ausgelöst, weil die Methode __construct(), in der sich diese Zeile befindet, nicht in einem Objektkontext ausgeführt wird.

Um diesen Fehler zu vermeiden, ist es wichtig sicherzustellen, dass $this nur innerhalb des Kontexts verwendet wird einer Objektmethode oder -eigenschaft. Im bereitgestellten Beispiel würde der folgende Ansatz den Fehler beheben:

class foobar {

    public $foo;

    public function __construct($foo) {
        $this->foo = $foo; // Now within object context
    }

    public function foobarfunc() {
        return $this->foo();
    }

    public function foo() {
        return $this->foo;
    }
}

Jetzt akzeptiert die __construct()-Methode einen Parameter $foo, der zur foo-Eigenschaft des Objekts wird. Darüber hinaus verweist die foobarfunc()-Methode mithilfe von $this->foo korrekt auf die foo-Eigenschaft des Objekts.

Wenn die foobarfunc()-Methode aufgerufen werden soll, ohne ein Objekt zu erstellen, sollte stattdessen eine statische Methode verwendet werden , wie zum Beispiel:

class foobar {

    public static $foo; // Static variable

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

In diesem Fall kann die foobarfunc()-Methode direkt mit dem Klassennamen aufgerufen werden, ohne dass ein Objekt erforderlich ist Instanz.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich einen schwerwiegenden PHP-Fehler: „$this wird verwendet, 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