Quelle est la différence entre la classe PHP self et la classe statique ? Comment l'utiliser ?
藏色散人
Libérer: 2023-04-10 16:40:01
avant
3759 Les gens l'ont consulté
Pour la plupart des PHPers, les deux mots-clés PHP self et static ne sont pas inconnus. Nous apprenons à appeler les propriétés et méthodes statiques de la classe actuelle viaself::xxxx. Et qu'en est-il de l'électricité statique ? Beaucoup de gens savent probablement seulement qu'il est utilisé pour définir une méthode statique et des mots-clés d'attribut de classe.self::xxxx这种方式来调用当前类的静态属性和方法。而 static 呢?想必很多人只知道它是用于定义一个静态方法和类属性关键词。
因为 Class B 继承了 Class A。 A 与 B 都有一个静态方法who()。此时通过B::test()的时候,调用的实际上是 Class A 的who()方法。
因为子类 Class B 的静态方法who()属于在 Class A 之后的子类里面才定义的。而 PHP 的默认特性只允许调用最先定义的。
就这引出了后期静态绑定的概念。
官方示例 2:
Copier après la connexion
我们把 Class A 里面的test()方法体的self更改为static
C'est aussi ma compréhension précédente.
Passons maintenant en revue quelques utilisations courantes de ces deux mots-clés :
rrreeerrreeerrreee
Les utilisations courantes du mot-clé statique sont également reflétées de manière exhaustive dans les 3 exemples ci-dessus.
Je crois fermement que l'utilisation ci-dessus est très familière à tout PHPer débutant. Maintenant, ce dont je veux parler, ce sont les deux manières suivantes :
rrreee
Je crois que beaucoup de gens savent quenew self()crée un objet de la classe actuelle, mais ne savent pasnew static ()code> peut également créer un objet de la classe courante.À propos de l'utilisation denew static(), elle est expliquée dans la documentation officielle. Adresse : https://www.php.net/manual/zh/langage.oop5.late-static-bindings.php
PHP appelle officiellement cette méthode : liaison statique tardive. Exemple officiel 1 : rrreeeParce que la classe B hérite de la classe A. A et B ont tous deux une méthode statique
who(). À l'heure actuelle, lors du passage de
B::test(), ce qui est réellement appelé est la méthode
who()de la classe A. Parce que la méthode statique
who()de la sous-classe Classe B est définie dans la sous-classe après la classe A. La fonctionnalité par défaut de PHP permet uniquement d'appeler le premier défini. Cela conduit au concept de liaison statique tardive. Exemple officiel 2 :rrreeeAprès avoir modifié le
selfdu corps de la méthode
test()dans la classe A en
static, static représente Cela pointe toujours vers la classe appelante. C’est-à-dire bien que la méthode définie dans la classe parent Classe A soit en conflit avec la sous-classe du même nom. Cependant, lorsque la sous-classe l'appelle, elle passe automatiquement à la méthode statique du même nom de la sous-classe. Cela dépend de l'appelant. Vous pouvez comprendre en exécutant les deux exemples ci-dessus. La raison de cette rubrique. Ce problème est survenu parce que j'ai dû hériter de la méthode singleton pendant le fonctionnement réel. Cette fonctionnalité est donc impliquée. Apprentissage recommandé : "Tutoriel vidéo 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!
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