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

Liaison statique tardive après PHP POO

*文
Libérer: 2023-03-18 15:40:02
original
1416 Les gens l'ont consulté

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
Copier après la connexion

É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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal