Questions sur les variables statiques PHP

怪我咯
Libérer: 2023-03-13 11:12:02
original
1293 Les gens l'ont consulté

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; 
}
Copier après la connexion

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(); 
} 
}
Copier après la connexion

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();
Copier après la connexion

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();
Copier après la connexion

Une autre fonctionnalité importante de la portée des variables en PHP concerne les variables statiques. Les variables statiques n'existent que dans le domaine fonction local et ne sont initialisées qu'une seule fois. Lorsque l'exécution du programme quitte cette portée, sa valeur ne disparaîtra pas et le résultat de la dernière exécution sera utilisé.

Regardez l'exemple suivant :

<?php 
function Test() 
{ 
$w3sky = 0; 
echo $w3sky; 
$w3sky++; 
} 
?>
Copier après la connexion

Cette fonction définira la valeur de $w3sky sur 0 et affichera "0" à chaque fois qu'elle sera appelée. Augmenter la variable $w3sky++ de un n'a aucun effet, car la variable $w3sky n'existe pas une fois cette fonction terminée. Pour écrire une fonction de comptage qui ne perdra pas cette valeur de comptage, définissez la variable $w3sky comme statique :
comme suit :

<?php 
function Test() 
{ 
static $w3sky = 0; 
echo $w3sky; 
$w3sky++; 
} 
?>
Copier après la connexion

Cette fonction affichera à chaque fois que Test() est appelé La valeur de $w3sky et plus un.
Les variables statiques fournissent également un moyen de gérer les fonctions récursives. Une fonction récursive est une méthode qui s'appelle elle-même. Soyez prudent lorsque vous écrivez des fonctions récursives, car elles peuvent réapparaître indéfiniment sans sortie. Assurez-vous d'avoir un moyen d'interrompre la récursion. La fonction simple suivante compte récursivement jusqu'à 10, en utilisant la variable statique $count pour déterminer quand s'arrêter :
Exemple de variables statiques et de fonctions récursives :

<?PHP 
function Test() 
{ 
static $count = 0; 
$count++; 
echo $count; 
if ($count < 10) { 
Test(); 
} 
$count--; 
} 
?>
Copier après la connexion

Remarque : les variables statiques peuvent être utilisées comme dans l'exemple de déclaration ci-dessus. Si vous lui attribuez le résultat de expression dans une déclaration, cela provoquera une erreur d'analyse.
Exemple de déclaration de variables statiques :

<?PHP 
function foo(){ 
static $int = 0;// correct 
static $int = 1+2; // wrong (as it is an expression) 
static $int = sqrt(121); // wrong (as it is an expression too) 
$int++; 
echo $int; 
} 
?>
Copier après la connexion

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!