Sobes.tech
Junior — Middle

Šta će se desiti ako u podklasi pozovete metod koji nije definisan u njoj, pomoću self::?

sobes.tech АИ

Одговор од АИ

U PHP-u, ključna reč self:: uvek se odnosi na klasu u kojoj je napisana, a ne na klasu naslednika. Ako u podklasi pozovete metod putem self::, koji nije definisan u samoj podklasi, već u roditeljskoj klasi, PHP će pokušati da ga pronađe tačno u podklasi i neće ga naći, što će dovesti do greške.

Primer:

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

class ChildClass extends ParentClass {
    public static function bar() {
        self::foo(); // Pokušaj poziva foo() putem self:: u ChildClass
    }
}

ChildClass::bar(); // Greška: Call to undefined method ChildClass::foo()

Da biste pozvali metodu roditeljske klase, morate koristiti parent::foo() ili static::foo(), ako je potrebna kasna statička veza.