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.