PHP : Analyse de la différence entre les variables statiques statiques et les variables ordinaires

黄舟
Libérer: 2023-03-12 12:10:01
original
1934 Les gens l'ont consulté

1. Ajoutez static devant la variable pour former une variable static (variable statique).
2. La différence entre les variables statiques et les variables ordinaires est que la portée des variables globales non statiques est l'ensemble du programme source. Lorsqu'un programme source est constitué de plusieurs fichiers sources, des variables globales non statiques. sont dans chacun sont valides dans le fichier source. Les variables globales statiques limitent leur portée, c'est-à-dire qu'elles ne sont valides que dans le fichier source dans lequel la variable est définie et ne peuvent pas être utilisées dans d'autres fichiers source du même programme source. Étant donné que la portée des variables globales statiques est limitée à un fichier source et ne peut être partagée que par les fonctions de ce fichier source, les erreurs peuvent être évitées dans d'autres fichiers source.
3. La différence entre les variables statiques et les variables ordinaires :
La différence entre les variables globales statiques et les variables globales ordinaires : les variables globales statiques ne sont initialisées qu'une seule fois pour éviter qu'elles soient référencées dans d'autres unités de fichiers;
La différence entre les variables locales statiques et les variables locales ordinaires : les variables locales statiques ne sont initialisées qu'une seule fois, et la fois suivante est basée sur la valeur du résultat précédent
La différence entre les fonctions statiques et les fonctions ordinaires : il y a ; une seule copie de la fonction statique dans la mémoire, et la fonction ordinaire est initialisée à chaque fois. Conservez une copie pour chaque appel.
4. Ajoutez le mot-clé static avant la variable globale, et la variable globale est définie comme une variable statique globale.
1) Emplacement en mémoire : zone de stockage statique (la zone de stockage statique existe pendant tout l'exécution du programme)
2) Initialisation : Les variables statiques globales non initialisées seront automatiquement initialisées à 0 par le programme (objet automatique La valeur est arbitraire sauf si elle est explicitement initialisée)
3) Portée : Les variables statiques globales ne sont pas visibles en dehors du fichier dans lequel elles sont déclarées. Exactement du point de définition à la fin du fichier.
5. Avantages des variables statiques :
ne sera pas accessible par d'autres fichiers. Vous pouvez modifier les variables
du même nom dans d'autres fichiers sans conflit.
Emplacement en mémoire : zone de stockage statique
Initialisation : Les variables statiques globales non initialisées seront automatiquement initialisées à 0 par le programme (la valeur d'un objet automatique est arbitraire sauf s'il est explicitement initialisé)
Scope : Le scope est toujours une portée locale Lorsque le bloc de fonction ou d'instruction qui le définit se termine, la portée se termine.

Remarque : lorsque static est utilisé pour modifier des variables locales, cela modifie l'emplacement de stockage des variables locales de la pile d'origine vers la zone de stockage statique. Cependant, la variable statique locale n'est pas détruite après avoir quitté la portée, mais réside toujours en mémoire jusqu'à la fin du programme, mais nous ne pouvons plus y accéder.
Lorsque static est utilisé pour modifier une variable globale, cela change la portée de la variable globale (elle n'est pas visible en dehors du fichier dans lequel elle est déclarée), mais ne change pas son emplacement de stockage, elle est toujours dans le static zone de stockage .

Static consiste à définir un objet statique ou une variable statique Nous connaîtrons les caractéristiques des variables ou des méthodes de classe définies par static après avoir lu les exemples pertinents dans cet article.
 1. Créez un objet$object = new Class(), puis utilisez "->" pour appeler : $object->attribut/fonction, à condition que la variable/méthode soit accessible .
 2. Appelez directement les méthodes/variables de classe : class::attribute/function, qu'elles soient statiques ou non statiques. Mais il y a des prérequis :
A. S'il s'agit d'une variable, il faut que la variable soit accessible.
B. S'il s'agit d'une méthode, en plus d'être accessible, elle doit également remplir :
b1) S'il s'agit d'une méthode statique, il n'y a pas de conditions particulières
b2) Si c'est une méthode statique ; est une méthode non statique, elle doit être modifiée si elle n'est pas utilisée dans la méthode $ cela signifie que les variables/méthodes non statiques ne sont pas appelées. Bien sûr, il n'y a aucun problème avec l'appel de variables/méthodes statiques.
Voyons ensuite la différence entre utiliser $object->… et utiliser class::…:
1. Pour utiliser $object->…, vous devez exécuter le constructeur pour créer un objet ;
 2. Utilisez class::... pour appeler des méthodes/variables statiques, sans exécuter le constructeur pour créer l'objet
 3. Utilisez class::... pour appeler des non- méthodes/variables statiques, et il n’est pas nécessaire d’exécuter le constructeur pour créer l’objet objet.
Ensuite, la chose étrange apparaît. Puisque 2 et 3 sont identiques, à quoi sert l'existence de méthodes/variables statiques ?
 Statique statique
 Déclarer un membre de classe ou une méthode comme statique permet un accès direct sans instancier la classe. Les membres statiques (à l'exception des méthodes statiques) ne sont pas accessibles via un objet. Les membres statiques appartiennent à la classe et n'appartiennent à aucune instance d'objet, mais les instances d'objet de la classe peuvent être partagées.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!