Maison  >  Article  >  développement back-end  >  Explication détaillée des exemples d'initialisation de variables statiques php

Explication détaillée des exemples d'initialisation de variables statiques php

怪我咯
怪我咯original
2017-07-10 11:34:084433parcourir

La variable membre

de php peut être initialisée en même temps que la déclaration, mais elle ne peut être initialisée qu'avec un scalaire.

Par exemple :

class A { 
public $f1 = 'xxxx'; 
static public $f2 = 100; 
}

Si vous souhaitez affecter une variable à un objet, elle ne peut être initialisée que dans le constructeur, par exemple :

class A { 
private $child; 
public function construct() { 
$this->child = new B(); 
} 
}

Mais il n'y a rien de similaire au constructeur/bloc statique static en java en php, il n'y a donc pas de moment approprié pour l'initialiser .

Il existe des moyens de résoudre le problème pour les membres partagés, par exemple :

class A { 
static public $child; 
} 
A::$child = new B();

Il ne semble pas y avoir de méthode propre pour les membres privés, la seule façon est de le faire :

class A { 
static private $child; 
static public initialize() { 
self::$child = new B(); 
} 
} 
A::initialize();

Ce qui suit présente principalement les connaissances pertinentes sur les variables membres statiques PHP. A une bonne valeur de référence

Membres statiques : les membres d'une classe statique sont des membres statiques en ajoutant le modificateur statique. Vous pouvez directement utiliser le nom de la classe + le nom du membre statique pour accéder à ce membre statique, car les membres statiques existent en mémoire. , les membres non statiques doivent être instanciés avant que la mémoire ne soit allouée, de sorte que les membres statiques ne peuvent pas accéder aux membres non statiques. Étant donné que les membres statiques existent en mémoire, les membres non statiques peuvent accéder directement aux membres statiques de la classe

. 1 . Définition de la variable globale statique

 : Ajoutez le mot-clé static avant la variable globale et la variable est définie comme une variable globale statique.

Caractéristiques :

A. Cette variable alloue de la mémoire dans la zone de données globale.

B. Initialisation : si elle n'est pas explicitement initialisée, elle sera implicitement initialisée à 0 (les variables automatiques sont aléatoires sauf si elles sont explicitement initialisées).

C. La variable d'accès n'est visible que dans le fichier source à proprement parler, elle doit commencer au point de définition et se terminer dans ce fichier.

2. Variable locale statique

Caractéristiques :

A. Cette variable alloue de la mémoire dans la zone de données globale.

B. Initialisation : s'il n'est pas explicitement initialisé, il sera implicitement initialisé à 0 et les appels de fonction suivants ne seront plus initialisés.

C. Il réside toujours dans la zone de données globales jusqu'à la fin du programme. Mais sa portée est une portée locale. Lorsque le bloc de fonction ou d'instruction qui le définit prend fin, sa portée prend fin.

Les membres de données statiques suivent les mêmes règles d'accès publiques, protégées et privées que les membres de données ordinaires

Étant donné que les membres de données statiques allouent de la mémoire dans la zone de données globale, tous les objets appartenant à cette classe sont partagés ; il, donc, Il n'appartient pas à un objet de classe spécifique, et sa portée est visible lorsqu'aucun objet de classe n'est généré, c'est-à-dire lorsqu'aucune instance de la classe n'est générée, nous pouvons l'utiliser '' L'initialisation des membres de données statiques est ; différent de l’initialisation générale des membres de données. Le format d'initialisation des membres de données statiques est :

type de données::=

membre de données statique de la classe Il existe deux formulaires d'accès :

. ou ::

si membre de données statique accès Si les autorisations le permettent (c'est-à-dire les membres publics), vous pouvez référencer les membres de données statiques dans le programme selon le format ci-dessus

les membres de données statiques sont principalement utilisés lorsque chaque objet a le ; même élément attribut . Par exemple, pour une classe de dépôt, le taux d'intérêt pour chaque instance est le même. Par conséquent, les intérêts doivent être définis en tant que données membres statiques de la classe de dépôt. Cela présente deux avantages. Premièrement, quel que soit le nombre d'objets de classe de dépôt définis, les membres des données d'intérêt partagent tous la mémoire allouée dans la zone de données globale, ce qui permet d'économiser de l'espace de stockage. Deuxièmement, une fois que les intérêts doivent être modifiés, tant qu'ils sont modifiés une fois, les intérêts de tous les objets de dépôt seront modifiés

 ;

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!

Déclaration:
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