Al principio me confundí por qué funcionan las dos llamadas al método en el constructor, pero ahora creo que lo entiendo. Las clases extendidas heredan los métodos de los padres como si estuvieran declarados en la clase en sí, Y los métodos existen en el padre, por lo que ambos deberían funcionar.formas múltiples de llamar al método padre en php
Ahora me pregunto si hay una forma preferida (es decir, mejor práctica) de llamar al método (a través de parent
o this
), y si estas son formas verdaderamente idénticas de ejecutar el mismo código, o si hay cualquier advertencia al usar una sobre la otra.
Lo siento, probablemente estoy más que pensando en esto.
abstract class Animal {
function get_species() {
echo "test";
}
}
class Dog extends Animal {
function __construct(){
$this->get_species();
parent::get_species();
}
}
$spike = new Dog;
¿cómo lo haré sin "extender"? como si tuviera alguna "pierna" claass dentro de la clase "humana" pero realmente no necesito extenderla, ya que no necesito la funcionalidad "humana" de los padres. ahora, si crease un '$ leg = new leg()' dentro del 'humano', ¿cómo podría llamar a las funciones humanas desde dentro de una instancia leg '$ leg'? – user151496
@ user151496 Una pierna no es una subclase de ser humano. Un humano tiene muchas piernas, pero una pierna no es un tipo de humano. Por lo tanto, no debes tener una clase de pierna que herede de humana, porque una pierna no es humana. – Beetle
¿Harías de Leg una clase que tenga una interfaz de Leggy? O simplemente haz que la clase Humana implemente a Leggy? ¿Cómo podemos definir mejor que una pierna no es exclusiva de los humanos, sino también que las piernas humanas son exclusivamente humanas y una propiedad general de los humanos? – Anthony