Maison >développement back-end >tutoriel php >Questions sur les variables statiques PHP

Questions sur les variables statiques PHP

怪我咯
怪我咯original
2017-07-10 11:39:541329parcourir

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();

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++; 
} 
?>

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++; 
} 
?>

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--; 
} 
?>

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; 
} 
?>

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