Sobes.tech
Junior — Middle

Wat gebeurt er als in een subclass een methode wordt aangeroepen die daarin niet is gedefinieerd, met behulp van self::?

sobes.tech AI

Antwoord van AI

In PHP verwijst het sleutelwoord self:: altijd naar de klasse waarin het geschreven is, niet naar de afgeleide klasse. Als in een subclass een methode wordt aangeroepen via self::, die niet in de subclass zelf is gedefinieerd maar in de ouderklasse, probeert PHP deze precies in de subclass te vinden en zal het niet vinden, wat tot een fout leidt.

Voorbeeld:

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

class ChildClass extends ParentClass {
    public static function bar() {
        self::foo(); // Poging om foo() aan te roepen via self:: in ChildClass
    }
}

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

Om de methode van de ouderklasse aan te roepen, moet parent::foo() worden gebruikt of static::foo(), indien late static binding nodig is.