Dans l'ancienne version de PHP, return new self() est utilisé pour renvoyer une instance de cette classe ; mais cette méthode présente un gros inconvénient, c'est-à-dire que self fait référence au contexte d'analyse plutôt qu'au contexte d'appel. Cet article partage principalement avec vous l'explication détaillée de la liaison statique retardée PHP. J'espère qu'il pourra vous aider.
abstract class father { public static function create() { return new self(); } } class son1 extends father { } son1::create();
C'est-à-dire que la sous-classe appelant la méthode create() dans le code ci-dessus renvoie en fait une instance de la classe parent, car self pointe vers l'endroit où elle se trouve défini plutôt que l'endroit où il est appelé. Et la classe père est une classe abstraite, ce code signalera une erreur fatale.
La liaison statique retardée a été introduite après PHP 5.3, en utilisant le mot-clé static. <code> <br/>
abstract class father { public static function create() { return new static(); } } class son1 extends father { } son1::create();
Changer self en static peut s'exécuter normalement, car static pointe vers la classe appelée plutôt que vers la classe définie.
Nous pouvons également utiliser static comme identifiant d'une méthode statique, même lorsqu'elle est appelée depuis un contexte non statique. J'écrirai à ce sujet plus tard.
Recommandations associées :
Implémentation PHP de liaison statique tardive
Explication détaillée des exemples de liaison statique tardive 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!