Junior — Middle
¿Qué sucede si en una subclase se llama a un método que no está definido en ella, mediante una llamada con self::?
sobes.tech AI
Respuesta de la IA
En PHP, la palabra clave self:: siempre hace referencia a la clase en la que está escrita, no a la clase hija. Si en una subclase se llama a un método mediante self::, que no está definido en la propia subclase, sino en la clase padre, PHP intentará encontrar ese método exactamente en la subclase y no lo encontrará, lo que provocará un error.
Ejemplo:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // Intento de llamar a foo() mediante self:: en ChildClass
}
}
ChildClass::bar(); // Error: Call to undefined method ChildClass::foo()
Para llamar al método de la clase padre, se debe usar parent::foo() o static::foo(), si se requiere enlace estático tardío.