Résolution static
La programmation orientée objet en PHP
Résolution statique à la volée
La résolution statique à la volée permet de savoir quelle classe a été initialement appelée afin d'invoquer des méthodes ou accéder à des attributs de la classe appelée.
self:: sert à appeler un attribut, une méthode statique ou une constante de la classe dans laquelle est contenu self::
<?php
class Mere {
public static function lancerLeTest() {
self::quiEstCe();
}
public static function quiEstCe() {
echo 'Je suis la classe Mère !';
}
}
class Enfant extends Mere {
public static function quiEstCe() {
echo 'Je suis la classe Enfant !';
}
}
Enfant::lancerLeTest();
Pourquoi c'est la méthode quiEstCe de la classe parente qui a été appelée ? Pourquoi pas celle de la classe fille puisqu'elle a été récrite ?
Tout simplement parce que self:: fait appel à la méthode statique de la classe dans laquelle est contenu self::, donc de la classe parente
Tout tourne autour de l'utilisation de static::. static:: a exactement le même effet que self::, à l'exception près que static::appelle l'élément de la classe qui est appelée pendant l'exécution. C'est-à-dire que si j'appelle la méthode lancerLeTest depuis la classe Enfant et que dans cette méthode j'utilise static:: au lieu de self::, c'est la méthode quiEstCe de la classe Enfant qui sera appelée et non de la classe Mere !
<?php
class Mere {
public static function lancerLeTest() {
static::quiEstCe();
}
public function quiEstCe() {
echo 'Je suis la classe Mere !';
}
}
class Enfant extends Mere {
public static function quiEstCe() {
echo 'Je suis la classe Enfant !';
}
}
Enfant::lancerLeTest();