Maison > Article > développement back-end > [classes et objets php] liaison statique tardive
Le contenu de cet article concerne la liaison statique tardive [classes et objets php], qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
Liaison statique tardive <.>
PHP 5.3.0Utilisé pour : Références à des classes appelées statiquement dans la portée de l'héritageComment ça marche :
Cette fonctionnalité est nommée "Late Static Binding" d'un point de vue interne au langage.
On peut également l'appeler « liaison statique » car elle peut être utilisée pour (mais sans s'y limiter) des appels à des méthodes statiques.
<?phpclass A { public static function who() { echo __CLASS__; //返回该类被定义时的名字 } public static function test() { self::who(); } }class B extends A { // public static function who() { // echo __CLASS__; // }} B::test(); //A?>
La liaison statique tardive souhaitait à l'origine introduire un nouveau mot-clé pour représenter la classe initialement appelée au moment de l'exécution pour contourner les restrictions .
En termes simples, ce mot-clé vous permet de faire référence à la classe B au lieu de A lors de l'appel de test() dans l'exemple ci-dessus. Il a finalement été décidé de ne pas introduire de nouveaux mots-clés, mais d'utiliser le mot-clé statique déjà réservé.
Dans un environnement non statique, la classe appelée est la classe à laquelle appartient l'instance d'objet. Puisque $this-> tentera d'appeler la méthode privée dans la même portée, static:: peut donner des résultats différents.Example #2 static:: 简单用法<?phpclass A { public static function who() { echo __CLASS__; } public static function test() { static::who(); // 注意使用static,后期静态绑定从这里开始 } }class B extends A { public static function who() { echo __CLASS__; } } B::test(); //B?>Une autre différence est que static:: ne peut être utilisé que pour les propriétés statiques.
Liaison statique tardive
PHP 5.3.0
Utilisé pour : les références aux classes appelées statiquement dans la portée de l'héritage
Principe de fonctionnement :
Cette fonctionnalité est nommée "Late Static Binding" d'un point de vue interne au langage.
"Liaison tardive" signifie que static:: n'est plus résolu dans la classe dans laquelle la méthode actuelle est définie, mais est calculé au moment de l'exécution réelle.
<?phpclass A { public static function who() { echo __CLASS__; //返回该类被定义时的名字 } public static function test() { self::who(); } }class B extends A { // public static function who() { // echo __CLASS__; // }} B::test(); //A?>Utilisation de la liaison statique tardive
La liaison statique tardive souhaitait à l'origine introduire un nouveau mot-clé pour représenter la classe initialement appelée au moment de l'exécution pour contourner les restrictions .
En termes simples, ce mot-clé vous permet de faire référence à la classe B au lieu de A lors de l'appel de test() dans l'exemple ci-dessus. Il a finalement été décidé de ne pas introduire de nouveaux mots-clés, mais d'utiliser le mot-clé statique déjà réservé.Dans un environnement non statique, la classe appelée est la classe à laquelle appartient l'instance d'objet. Puisque $this-> tentera d'appeler la méthode privée dans la même portée, static:: peut donner des résultats différents.
Une autre différence est que static:: ne peut être utilisé que pour les propriétés statiques.Example #2 static:: 简单用法<?phpclass A { public static function who() { echo __CLASS__; } public static function test() { static::who(); // 注意使用static,后期静态绑定从这里开始 } }class B extends A { public static function who() { echo __CLASS__; } } B::test(); //B?>
Recommandations associées :
[classes et objets php] contraintes de type
[classes et objets php] copie d'objet
[classes et objets php] méthodes magiques
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!