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
É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
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 !