Junior — Middle
Que se passe-t-il si dans une sous-classe, on appelle une méthode qui n'est pas définie dans celle-ci, en utilisant self::?
sobes.tech IA
Réponse de l'IA
En PHP, le mot-clé self:: fait toujours référence à la classe dans laquelle il est écrit, et non à la classe enfant. Si dans une sous-classe, vous appelez une méthode via self::, qui n'est pas définie dans la sous-classe elle-même mais dans la classe parente, PHP essaiera de la trouver précisément dans la sous-classe et ne la trouvera pas, ce qui entraînera une erreur.
Exemple:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Tentative d'appel de foo() via self:: dans ChildClass
}
}
ChildClass::bar(); // Erreur : Call to undefined method ChildClass::foo()
Pour appeler la méthode de la classe parente, il faut utiliser parent::foo() ou static::foo(), si un lien statique tardif est requis.