Junior — Middle
O que acontece se numa subclasse chamar um método que não está definido nela, usando self::?
sobes.tech IA
Resposta da IA
Em PHP, a palavra-chave self:: refere-se sempre à classe onde está escrita, e não à classe filha. Se numa subclasse chamar um método através de self::, que não está definido na própria subclasse, mas na classe pai, o PHP tentará encontrá-lo exatamente na subclasse e não o encontrará, o que levará a um erro.
Exemplo:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Tentativa de chamar foo() via self:: em ChildClass
}
}
ChildClass::bar(); // Erro: Call to undefined method ChildClass::foo()
Para chamar o método da classe pai, deve-se usar parent::foo() ou static::foo(), se for necessário o enlace estático tardio.