Llamar funciones de clases secundarias desde la clase principal
En PHP, es posible llamar a una función desde una clase secundaria dentro de una clase principal, pero requiere una planificación cuidadosa.
Considere el siguiente ejemplo de código:
class whale { ... }
class fish extends whale { ... }
En este ejemplo, tenemos una clase ballena y una clase pez que hereda de ella. El objetivo es llamar a la función test() desde la clase fish dentro de la función myfunc() de la clase ballena.
Solución: usar clases abstractas
Para lograr Para esto, podemos aprovechar las clases abstractas. Una clase abstracta impone la implementación de ciertos métodos en sus clases secundarias.
abstract class whale {
function __construct() { ... }
function myfunc() { $this->test(); }
abstract function test();
}
En la clase ballena actualizada, ahora declaramos myfunc() y test() como métodos abstractos. myfunc() llamará a test(), que debe implementarse en la clase secundaria.
class fish extends whale {
function __construct() { parent::__construct(); }
function test() { echo "So you managed to call me !!"; }
}
En la clase fish, proporcionamos una implementación para test(). Esto garantiza que se cumplan los requisitos abstractos de la clase principal.
Con esta configuración, ahora podemos llamar a la función test() desde peces dentro de myfunc() de la clase ballena.
$fish = new fish();
$fish->test(); // Output: So you managed to call me !!
$fish->myfunc(); // Output: So you managed to call me !!
Al usar clases abstractas, aplicamos la herencia adecuada y garantizamos que las clases secundarias implementen los métodos requeridos. Esto nos permite llamar funciones de clases secundarias desde clases principales sin problemas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3