Sobes.tech
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.