Junior — Middle
Ce se întâmplă dacă într-o subclasă se apelează o metodă care nu este definită în ea, folosind self::?
sobes.tech AI
Răspuns de la AI
În PHP, cuvântul cheie self:: face întotdeauna referire la clasa în care este scris, nu la clasa copil. Dacă într-o subclasă se apelează o metodă prin self::, care nu este definită în subclasă însă în clasa părinte, PHP va încerca să o găsească exact în subclasă și nu o va găsi, ceea ce va duce la o eroare.
Exemplu:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Încercare de a apela foo() prin self:: în ChildClass
}
}
ChildClass::bar(); // Eroare: Call to undefined method ChildClass::foo()
Pentru a apela metoda clasei părinte, trebuie folosit parent::foo() sau static::foo(), dacă este necesară legătura statică întârziată.