Einführung in statische Variablen in PHP

不言
Freigeben: 2023-04-02 16:02:01
Original
1865 Leute haben es durchsucht

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
Nach dem Login kopieren

2 statische Klassenmitgliedsvariablen

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
Nach dem Login kopieren

1.statische Klassenmethode

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
Nach dem Login kopieren

2. Statische Variablen von Trait

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
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage