Maison  >  Article  >  développement back-end  >  Liaison statique tardive après PHP POO

Liaison statique tardive après PHP POO

*文
*文original
2017-12-27 10:28:121383parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn