Cet article présente principalement la fonction de liaison post-statique de PHP orienté objet. Cet article présentera la fonction de liaison statique tardive de PHP, qui est principalement utilisée pour résoudre le problème du référencement de classes appelées statiquement dans la portée de l'héritage. J'espère que cela aide tout le monde.
Cet article présentera la fonction de liaison statique tardive de PHP, elle est principalement utilisée pour résoudre le problème du référencement de classes appelées statiquement dans la portée de l'héritage.
Regardez d'abord l'exemple suivant :
class Person { public static function status() { self::getStatus(); } protected static function getStatus() { echo "Person is alive"; } } class Deceased extends Person { protected static function getStatus() { echo "Person is deceased"; } } Deceased::status(); //Person is alive
Évidemment, le résultat n'est pas celui attendu. C'est parce que self:: dépend de la classe dans laquelle il est défini, pas de la classe. classe de course à pied. Afin de résoudre ce problème, vous pouvez remplacer la méthode status() dans la classe héritée. Une meilleure solution est que PHP 5.3 ajoute la fonction de liaison statique tardive.
class Person { public static function status() { static::getStatus(); } protected static function getStatus() { echo "Person is alive"; } } class Deceased extends Person { protected static function getStatus() { echo "Person is deceased"; } } Deceased::status(); //Person is deceased
On voit que static:: ne pointe plus vers la classe actuelle. En fait, elle est calculée au moment de l'exécution, forçant l'obtention de toutes les propriétés de la classe finale.
Par conséquent, il est recommandé de ne pas utiliser self:: à l'avenir, utilisez static ::
Recommandations associées :
Mode script de transaction orienté objet PHP
Classe finale et méthode finale orientées objet PHP
Explication orientée objet PHP_Tutoriel PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!