Junior — Middle
Čo sa stane, ak v podtriede zavoláte metódu, ktorá v nej nie je definovaná, pomocou self::?
sobes.tech AI
Odpoveď od AI
V PHP-ju sa ključové slovo self:: vždy odkazuje na triedu, v ktorej je napísané, nie na triedu potomka. Ak v podtriede zavoláte metódu cez self::, ktorá nie je definovaná v samotnej podtriede, ale v rodičovskej triede, PHP sa pokúsi nájsť ju presne v podtriede a nenájde ju, čo povedie k chybe.
Príklad:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Pokus o zavolanie foo() cez self:: v ChildClass
}
}
ChildClass::bar(); // Chyba: Call to undefined method ChildClass::foo()
Na zavolanie metódy rodičovskej triedy je potrebné použiť parent::foo() alebo static::foo(), ak je požadované neskoré statické viazanie.