Heim  >  Artikel  >  Backend-Entwicklung  >  Fragen zu statischen PHP-Variablen

Fragen zu statischen PHP-Variablen

怪我咯
怪我咯Original
2017-07-10 11:39:541241Durchsuche

Die Mitgliedsvariable

von php kann gleichzeitig mit der Deklaration initialisiert werden, jedoch nur mit einem Skalar.

Zum Beispiel:

class A { 
public $f1 = 'xxxx'; 
static public $f2 = 100; 
}

Wenn Sie einem Objekt eine Variable zuweisen möchten, kann diese nur in initialisiert werden der Konstruktor, zum Beispiel:

class A { 
private $child; 
public function construct() { 
$this->child = new B(); 
} 
}

Aber es gibt nichts Vergleichbares zum statischen-Konstruktor/statischen Block in Java in PHP, daher gibt es keinen geeigneten Zeitpunkt, ihn zu initialisieren .

Es gibt Möglichkeiten, das Problem für geteilte Mitglieder zu lösen, zum Beispiel:

class A { 
static public $child; 
} 
A::$child = new B();

Es scheint keine saubere Methode für private Mitglieder zu geben, die einzige Möglichkeit besteht darin, dies zu tun :

class A { 
static private $child; 
static public initialize() { 
self::$child = new B(); 
} 
} 
A::initialize();

Ein weiteres wichtiges Merkmal des Variablenbereichs in PHP sind statische Variablen. Statische Variablen existieren nur in der lokalen -Funktionsdomäne und werden nur einmal initialisiert. Wenn die Programmausführung diesen Bereich verlässt, verschwindet ihr Wert nicht und das Ergebnis der letzten Ausführung wird verwendet.

Sehen Sie sich das folgende Beispiel an:

<?php 
function Test() 
{ 
$w3sky = 0; 
echo $w3sky; 
$w3sky++; 
} 
?>

Diese Funktion setzt den Wert von $w3sky auf 0 und gibt bei jedem Aufruf „0“ aus. Das Erhöhen der Variablen $w3sky++ um eins hat keine Auswirkung, da die Variable $w3sky nicht mehr existiert, sobald diese Funktion beendet wird. Um eine Zählfunktion zu schreiben, die diesen Zählwert nicht verliert, definieren Sie die Variable $w3sky als statisch:
wie folgt:

<?php 
function Test() 
{ 
static $w3sky = 0; 
echo $w3sky; 
$w3sky++; 
} 
?>

Diese Funktion gibt jedes Mal aus, wenn Test() aufgerufen wird. Der Wert von $w3sky und plus eins.
Statische Variablen bieten auch eine Möglichkeit, rekursive Funktionen zu verarbeiten. Eine rekursive Funktion ist eine Methode, die sich selbst aufruft. Seien Sie beim Schreiben rekursiver Funktionen vorsichtig, da diese ohne Exit auf unbestimmte Zeit rekursiv sein können. Stellen Sie sicher, dass Sie eine Möglichkeit haben, die Rekursion abzubrechen. Die folgende einfache Funktion zählt rekursiv bis 10 und verwendet dabei die statische Variable $count, um zu bestimmen, wann gestoppt werden soll:
Beispiel für statische Variablen und rekursive Funktionen:

<?PHP 
function Test() 
{ 
static $count = 0; 
$count++; 
echo $count; 
if ($count < 10) { 
Test(); 
} 
$count--; 
} 
?>

Hinweis: Statische Variablen können wie in verwendet werden die obige Beispielanweisung. Wenn ihm das Ergebnis von Ausdruck in der Deklaration zugewiesen wird, führt dies zu einem Analysefehler.
Beispiel für die Deklaration statischer Variablen:

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

Das obige ist der detaillierte Inhalt vonFragen zu statischen PHP-Variablen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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