Introduction à la fonction de liaison statique tardive de PHP orienté objet

高洛峰
Libérer: 2023-03-04 10:44:02
original
1101 Les gens l'ont consulté

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.

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. en courir un genre. 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 et d'utiliser static::

Pour plus d'articles liés à l'introduction de la fonction de liaison post-statique orientée objet PHP , veuillez faire attention au site Web PHP 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