Sobes.tech
Junior — Middle

Mi történik, ha egy alosztályban egy olyan metódust hívunk meg, amely nincs benne, a self:: használatával?

sobes.tech MI

Válasz az MI-től

PHP-ben a self:: kulcsszó mindig arra a osztályra utal, amelyben írva van, nem az örökölt osztályra. Ha egy alosztályban self::-t használva hívunk meg egy módszert, amely nem az alosztályban, hanem a szülőosztályban van definiálva, akkor a PHP megpróbálja pontosan az alosztályban megtalálni, és nem fogja megtalálni, ami hibához vezet.

Példa:

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

class ChildClass extends ParentClass {
    public static function bar() {
        self::foo(); // Megpróbálja meghívni a foo() metódust self::-tel az ChildClass-ben
    }
}

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

A szülőosztály módszerének hívásához használja a parent::foo()-t vagy a static::foo(), ha késői statikus kötés szükséges.