All'inizio ero confuso perché entrambe le chiamate al metodo nel costruttore funzionano, ma ora penso di aver capito. Le classi estendenti ereditano i metodi del genitore come se fossero dichiarati nella classe stessa, E i metodi esistono nel genitore, quindi entrambi dovrebbero funzionare.diversi modi di chiamare il metodo genitore in php
Ora mi chiedo se c'è un modo preferito (vale a dire la migliore pratica) di chiamare il metodo (tramite parent
o this
) e se questi sono modi veramente identici di eseguire lo stesso codice, o se ci sono eventuali avvertimenti quando si utilizza uno sull'altro.
Scusa, probabilmente sto pensando troppo a questo.
abstract class Animal {
function get_species() {
echo "test";
}
}
class Dog extends Animal {
function __construct(){
$this->get_species();
parent::get_species();
}
}
$spike = new Dog;
come farei senza "estendere"? come se avessi qualche claass "leg" all'interno della classe "human", ma non ho davvero bisogno di estenderlo, in quanto non ho bisogno della funzionalità "umana" del genitore. ora, se ho creato un '$ leg = new leg()' all'interno di 'human', come chiamerei le funzioni di human all'interno di un'istanza di gamba' $ leg'? – user151496
@ user151496 Una gamba non è una sottoclasse di umani. Un umano ha molte gambe, ma una gamba non è un tipo di essere umano. Quindi non dovresti avere una classe di gamba che erediti dall'essere umano, perché una gamba non è un essere umano. – Beetle
Vuoi creare una classe Leg che ha un'interfaccia di Leggy? Oppure fai in modo che le classi umane implementino Leggy? Come possiamo meglio definire che una gamba non è esclusiva per gli umani, ma anche che le gambe umane sono unicamente umane e una proprietà generale degli umani? – Anthony