Die Verwendung von $this innerhalb einer statischen Funktion schlägt fehl
Das Verwenden von $this
innerhalb einer statischen Funktion ist in PHP nicht erlaubt, da die Variable $this
nur innerhalb des Kontexts einer nicht statischen Methode verfügbar ist. Eine statische Methode wird auf einer Klasse aufgerufen, anstatt auf einer Instanz der Klasse. Daher gibt es keinen Objektkontext für $this
, auf den verwiesen werden kann.
Hier ist ein Beispiel für eine Klasse mit einer statischen und einer nicht statischen Methode:
<?php
class MyClass
{
public static function staticMethod()
{
// Das Verwenden von $this hier führt zu einem Fehler
}
public function nonStaticMethod()
{
// Das Verwenden von $this hier ist gültig
}
}
Wenn Sie auf eine Eigenschaft oder Methode der Klasse innerhalb einer statischen Methode zugreifen müssen, können Sie das Schlüsselwort self
oder den Namen der Klasse verwenden.
<?php
class MyClass
{
public static function staticMethod()
{
self::nonStaticMethod();
MyClass::nonStaticMethod();
}
public function nonStaticMethod()
{
echo "Ich bin nonStaticMethod";
}
}
Wie Sie in den obigen Beispielen sehen können, können Sie nonStaticMethod innerhalb von staticMethod mit dem Schlüsselwort self oder dem Klassennamen aufrufen.