Dieser Artikel stellt hauptsächlich die Einführung statischer Variablen in PHP vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen
Nur statische Variablen in Funktionen Wirkt innerhalb der Funktion. Nach jedem Aufruf ändert sich der Wert der statischen Variablen basierend auf dem vorherigen Aufruf. Wenn bei der Definition ein Anfangswert zugewiesen wird, wird diese Anweisung nur einmal ausgeführt.
Beispiel: Unabhängig davon, wie oft die Funktion getdata() static $c2 = 0 aufgerufen wird, wird diese Anweisung zunächst nur einmal ausgeführt
function getdata(){ static $c2 = 0;//初始化语句 $c2 = $c2 + 1; echo "$c2\n"; } getdata();//结果 1 getdata();//结果 2
1. Die statischen Mitgliedsvariablen der Klasse gehören nur zu dieser Klasse, aber alle Instanzen der Klasse teilen sich diese statische Mitgliedsvariable
2 Mitgliedsvariablen müssen nicht instanziiert werden, und die Zugriffsgeschwindigkeit ist schneller
Zum Beispiel:
class C1 { //use Counter; static $c2=1; public function inc() { static $c; $c = $c + 1; echo "$c\n"; } } $o = new C1(); $o->inc(); // echo 1 $p = new C1(); $p->inc(); // echo 2 echo' '; $p::$c2=5; echo C1::$c2;//echo 5 静态成员变量不需要实例化就能访问,且访问速度快一些 echo' '; echo $p::$c2;//echo 5 echo' '; echo $o::$c2;//echo 5
Die statische Methode der Klasse kann nur zugreifen statische Mitgliedsvariablen, aber keine nicht statischen Mitgliedsvariablen (wenn Ja, wird ein Fehler gemeldet)
class C3 { //use Counter; public static $c3=1; public $c5 =5; public static function inc1() { echo C3::$c3;// } public static function inc2() { echo $this->c5; //会报错 $this不允许出现在静态方法中 } } C3::inc1();// echo 1 C3::inc2(); //Fatal error: Uncaught Error: Using $this when not in object context
Statische Variablen von Trait haben keinen Einfluss aufeinander, wenn sie von verschiedenen Klassen verwendet werden
Zum Beispiel:
trait Counter { public function inc() { static $c = 0; $c = $c + 1; echo "$c\n"; } } class C1 { use Counter; } class C2 { use Counter; } $o = new C1(); $o->inc(); // echo 1 $o->inc(); // echo 2 $b = new C1(); $b->inc(); // echo 3 $b->inc(); // echo 4 $p = new C2(); $p->inc(); // echo 1 $p->inc(); // echo 2
Implementierung von PHP-Hintergrundkommentaren
Wie PHP die Rechtmäßigkeit von IP überprüft
So implementieren Sie simulierte Mehrfachvererbung in PHP
Das obige ist der detaillierte Inhalt vonEinführung in statische Variablen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!