Au début, je ne savais pas pourquoi les deux méthodes appelaient dans le travail du constructeur, mais maintenant je pense que je comprends. Les classes étendues héritent des méthodes du parent comme si elles étaient déclarées dans la classe elle-même, ET les méthodes existent dans le parent, donc les deux devraient fonctionner.
Maintenant, je me demande s'il existe une manière préférée (c'est-à-dire la meilleure pratique) d'appeler la méthode (via parent
ou this
), et si ce sont des façons vraiment identiques d'exécuter le même code, ou s'il y a des mises en garde lors de l'utilisation d'un over L'autre.
Désolé, j'en ai probablement trop réfléchi.
abstract class Animal {
function get_species() {
echo "test";
}
}
class Dog extends Animal {
function __construct(){
$this->get_species();
parent::get_species();
}
}
$spike = new Dog;
$leg = new leg()
à l'intérieur dehuman
, comment pourrais-je appeler les fonctions humaines à partir d'une instance de jambe$leg
?À moins que je ne comprenne mal la question, j'utiliserais presque toujours $ this-> get_species parce que la sous-classe (dans ce cas, dog) pourrait écraser cette méthode car elle l'étend. Si la classe dog ne redéfinit pas la méthode, les deux méthodes sont fonctionnellement équivalentes, mais si à un moment donné dans le futur vous décidez que vous voulez que la méthode get_species de dog affiche "dog", vous devrez alors parcourir tout le code et changes le.
Lorsque vous utilisez $ this, il fait en fait partie de l'objet que vous avez créé et sera donc toujours le plus à jour également (si la propriété utilisée a changé d'une manière ou d'une autre pendant la durée de vie de l'objet) tout en utilisant la classe parent appelle la méthode de classe statique.
la source