Analyser le mot-clé self de PHP
Quelqu'un dans le groupe PHP a posé des questions sur l'utilisation du mot-clé self
La réponse est relativement évidente : vous ne pouvez pas utiliser this
pour appeler des fonctions non membres au sein d'un membre statique. fonction, mais vous pouvez utiliser self
Appeler des fonctions/variables/constantes membres statiques ; d'autres fonctions membres peuvent utiliser self
pour appeler des fonctions membres statiques et des fonctions membres non statiques. Au fur et à mesure que la discussion s'approfondissait, j'ai découvert que self
n'était pas si simple. Compte tenu de cela, cet article compare et différencie d'abord plusieurs mots-clés, puis résume l'utilisation de self
. La différence entre
et parent
, static
et this
Pour bien comprendre self
, il faut le distinguer de parent
, static
et this
ouvert. Des comparaisons sont faites ci-dessous. La distinction entre
parent
self
et parent
est relativement simple : parent
fait référence à la méthode (ou variable) cachée de la classe parent/classe de base, et self
Référence à sa propre méthode (ou variable). Par exemple, le constructeur de la classe parent est appelé dans le constructeur :
class Base { public function __construct() { echo "Base contructor!", PHP_EOL; } } class Child { public function __construct() { parent::__construct(); echo "Child contructor!", PHP_EOL; } } new Child; // 输出: // Base contructor! // Child contructor!
static
static
Le but général est de modifier la fonction ou la variable pour en faire une fonction de classe et une classe variable, et elle peut également être modifiée dans la fonction. Les variables prolongent leur durée de vie tout au long de la durée de vie de l'application. Mais son association avec self
est une nouvelle utilisation introduite depuis PHP 5.3 : la liaison statique retardée.
Avec la fonction de liaison statique retardée de static
, la classe appartenant peut être déterminée dynamiquement au moment de l'exécution. Par exemple :
class Base { public function __construct() { echo "Base constructor!", PHP_EOL; } public static function getSelf() { return new self(); } public static function getInstance() { return new static(); } public function selfFoo() { return self::foo(); } public function staticFoo() { return static::foo(); } public function thisFoo() { return $this->foo(); } public function foo() { echo "Base Foo!", PHP_EOL; } } class Child extends Base { public function __construct() { echo "Child constructor!", PHP_EOL; } public function foo() { echo "Child Foo!", PHP_EOL; } } $base = Child::getSelf(); $child = Child::getInstance(); $child->selfFoo(); $child->staticFoo(); $child->thisFoo();
Le résultat du programme est le suivant :
Base constructor! Child constructor! Base Foo! Child Foo! Child Foo!
En termes de références de fonction, la différence entre self
et static
est : pour les fonctions membres statiques, self
pointe vers la classe actuelle du code, static
pointe vers la classe appelante ; pour les fonctions membres non statiques, self
supprime le polymorphisme et pointe vers la fonction membre de la classe actuelle static
est équivalent à this
. , qui pointe dynamiquement vers la fonction de la classe appelante. Les trois mots-clés
parent
, self
et static
sont très intéressants à regarder ensemble. Ils pointent respectivement vers la classe parent, la classe actuelle et la sous-classe, qui ont un peu un ". saveur passée, présente et future.
this
self
et this
sont les combinaisons les plus discutées et les plus susceptibles d'être mal utilisées. Les principales différences entre les deux sont les suivantes :
-
this
ne peut pas être utilisé dans les fonctions membres statiques,self
peut - accéder aux fonctions/variables membres statiques, Il est recommandé d'utiliser pour
self
au lieu de$this::
ou$this->
; - ne peut pas utiliser
self
pour accéder aux variables membres non statiques, uniquementthis
; -
this
À utiliser lorsque l'objet a été instancié,self
n'a pas cette restriction ; - est utilisé dans une fonction membre non statique,
self
supprime le comportement polymorphe et fait référence à la fonction de classe actuelle ; et la référencethis
appelle la fonction de remplacement de la classe (le cas échéant). Les utilisations de
self
Après avoir lu les différences entre les trois mots-clés ci-dessus, l'utilisation de self
est-elle immédiatement apparente ? Pour résumer en une phrase, c'est-à-dire : self
pointe toujours vers "la classe actuelle (et l'instance de classe)". En détail, c'est :
- remplace le nom de la classe et fait référence aux variables membres statiques et aux fonctions statiques de la classe actuelle
- supprime le comportement polymorphe et fait référence aux fonctions de la classe actuelle ; classe actuelle au lieu de sous-classes. Implémentation de la couverture
Slots
- Parmi ces mots-clés, seul
this
doit être ajouté avec le symbole$
et doit l'être. ajouté. Le trouble obsessionnel-compulsif signifie que c'est très inconfortable ; - Les fonctions membres statiques ne peuvent pas appeler les fonctions membres non statiques via
$this->
, mais elles peuvent être appelées viaself::
, et elles peuvent toujours fonctionner correctement. sans utiliser$this->
dans la fonction appelante. Ce comportement semble se comporter différemment dans différentes versions de PHP. C'est ok dans la version 7.3 actuelle - sorties
self
dans les fonctions statiques et les fonctions non statiques. Ils sont tousstring(4) "self"
, la sortie du puzzle -
return $this instanceof static::class;
aura des erreurs grammaticales, mais les deux façons d'écrire suivantes sont normales :$class = static::class; return $this instanceof $class; // 或者这样: return $this instanceof static;
Copier après la connexionAlors pourquoi ce? !
Pour plus d'articles techniques liés à PHP, veuillez visiter la colonne Tutoriel PHP pour apprendre !
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
