Sobes.tech
Junior — Middle

Was passiert, wenn in einer Unterklasse eine Methode aufgerufen wird, die dort nicht definiert ist, mittels self::?

sobes.tech KI

Antwort von AI

In PHP bezieht sich das Schlüsselwort self:: immer auf die Klasse, in der es geschrieben steht, nicht auf die Kindklasse. Wenn in einer Unterklasse eine Methode mit self:: aufgerufen wird, die nicht in der Unterklasse selbst, sondern in der Elternklasse definiert ist, versucht PHP, diese Methode genau in der Unterklasse zu finden, was fehlschlägt und zu einem Fehler führt.

Beispiel:

class ParentClass {
    public static function foo() {
        echo "Parent foo";
    }
}

class ChildClass extends ParentClass {
    public static function bar() {
        self::foo(); // Versuch, foo() mit self:: in ChildClass aufzurufen
    }
}

ChildClass::bar(); // Fehler: Call to undefined method ChildClass::foo()

Um die Methode der Elternklasse aufzurufen, sollte parent::foo() oder static::foo() verwendet werden, falls späte statische Bindung erforderlich ist.