Maison  >  Article  >  développement back-end  >  Utilisation de variables statiques en php, explication détaillée de la différence entre les variables statiques locales et les variables statiques globales

Utilisation de variables statiques en php, explication détaillée de la différence entre les variables statiques locales et les variables statiques globales

伊谢尔伦
伊谢尔伦original
2017-06-30 11:23:091592parcourir

StatiqueVariable n'existe que dans la portée de la fonction. Les variables statiques ne vivent que dans la pile. La prochaine fois que cette fonction est appelée, la variable La valeur. seront conservées

Les variables statiques n'existent que dans la portée de la fonction, et les variables statiques ne vivent que sur la pile. Généralement, les variables contenues dans les fonctions seront publiées après la fin de la fonction, comme les variables locales, mais pas les variables statiques. Au prochain appel de cette fonction, la valeur de la variable sera conservée.

Utilisation de base des variables statiques

1. Définir des variables statiques dans la classe
[Modificateur d'accès] statique $Nom de la variable ; 🎜>2. Comment accéder aux variables statiques
En cas d'accès dans une classe, il existe deux méthodes self::$static variable name, classname::$static variable name
En cas d'accès en dehors de la classe : il existe une méthode Nom de la classe : $nom de la variable statique

Exemple

class Child{ 
public $name; 
//这里定义并初始化一个静态变量 $nums 
public static $nums=0; 
function construct($name){ 
$this->name=$name; 
} 
public function join_game(){ 
//self::$nums 使用静态变量 
self::$nums+=1; 
echo $this->name."加入堆雪人游戏"; 
} 


}

//创建三个小孩 

$child1=new Child("李逵"); 
$child1->join_game(); 
$child2=new Child("张飞"); 
$child2->join_game(); 
$child3=new Child("唐僧"); 
$child3->join_game(); 

//看看有多少人玩游戏 
echo "<br/> 有这".Child::$nums;
Caractéristiques des variables locales statiques :


1. Ne suivra pas les appels de fonction et

. Quitte et change, mais bien que la variable continue d'exister, elle ne peut pas être utilisée. Si la fonction qui la définit est appelée à nouveau, elle peut continuer à être utilisée et la valeur laissée après l'appel précédent est enregistrée2 Les variables locales statiques ne seront initialisées qu'une seule fois
3 Statique
Attributs. ne peut être initialisé qu'avec une valeur de caractère ou une constante, et les expressions ne peuvent pas être utilisées. Même si une variable statique locale est définie sans valeur initiale, le système attribuera automatiquement une valeur initiale de 0 (pour les variables numériques) ou un caractère nul (pour les variables de caractères) ; 4. Lorsqu'une fonction est appelée plusieurs fois et que les valeurs de certaines variables doivent être conservées entre les appels, des variables locales statiques peuvent être prises en compte. Bien que les variables globales puissent également être utilisées pour atteindre l'objectif ci-dessus, les variables globales provoquent parfois des effets secondaires inattendus, il est donc toujours préférable d'utiliser des variables statiques locales.

function test()
{
    static $var = 5;  //static $var = 1+1;就会报错
    $var++;
    echo $var . &#39; &#39;;
}
 
test(); //2
test(); //3
test(); //4
echo $var; //报错:Notice: Undefined variable: var
À propos des variables globales statiques :

//全局变量本身就是静态存储方式,所有的全局变量都是静态变量
function static_global(){
    global $glo;
    $glo++;
    echo $glo.&#39;<br>&#39;;
}
static_global(); //1
static_global(); //2
static_global(); //3
echo $glo . &#39;<br>&#39;; //3



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