Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Initialisierungsbeispiele für statische PHP-Variablen

Detaillierte Erläuterung der Initialisierungsbeispiele für statische PHP-Variablen

怪我咯
怪我咯Original
2017-07-10 11:34:084383Durchsuche

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

Im Folgenden werden hauptsächlich die relevanten Kenntnisse über statische PHP-Mitgliedsvariablen vorgestellt. Hat einen guten Referenzwert

Statische Mitglieder: Mitglieder in einer statischen Klasse sind statische Mitglieder, indem der statische Modifikator hinzugefügt wird. Sie können den Klassennamen + den Namen des statischen Mitglieds direkt verwenden, um auf dieses statische Mitglied zuzugreifen, da statische Mitglieder im Speicher vorhanden sind Nicht statische Mitglieder müssen instanziiert werden, bevor Speicher zugewiesen wird, sodass statische Mitglieder nicht auf nicht statische Mitglieder zugreifen können. Da statische Mitglieder im Speicher vorhanden sind, können nicht statische Mitglieder direkt auf statische Mitglieder in der Klasse zugreifen 1. Statische globale Variable

Definition: Fügen Sie das Schlüsselwort static vor der globalen Variablen hinzu und die Variable wird als statische globale Variable definiert.

Funktionen:

A. Diese Variable reserviert Speicher im globalen Datenbereich.

B. Initialisierung: Wenn sie nicht explizit initialisiert wird, wird sie implizit auf 0 initialisiert (automatische Variablen sind zufällig, sofern sie nicht explizit initialisiert werden).

C. Die Zugriffsvariable ist genau genommen nur in der Quelldatei sichtbar, sie sollte am Definitionspunkt beginnen und in dieser Datei enden.

2. Statische lokale Variable

Funktionen:

A.

B. Initialisierung: Wenn es nicht explizit initialisiert wird, wird es implizit auf 0 initialisiert und nachfolgende Funktionsaufrufe werden nicht mehr initialisiert.

C. Es bleibt bis zum Ende des Programms immer im globalen Datenbereich. Sein Gültigkeitsbereich ist jedoch ein lokaler Gültigkeitsbereich. Wenn die Funktion oder der Anweisungsblock, der ihn definiert, endet, endet sein Gültigkeitsbereich.

Statische Datenmitglieder folgen denselben öffentlichen, geschützten und privaten Zugriffsregeln wie normale Datenmitglieder.

Da statische Datenmitglieder Speicher im globalen Datenbereich zuweisen, teilen sich alle zu dieser Klasse gehörenden Objekte es, also, Es gehört nicht zu einem bestimmten Klassenobjekt und sein Umfang ist sichtbar, wenn kein Klassenobjekt generiert wird, das heißt, wenn keine Instanz der Klasse generiert wird, können wir es betreiben. „Statische Datenelementinitialisierung ist.“ unterscheidet sich von der allgemeinen Datenelementinitialisierung. Das Format der Initialisierung statischer Datenelemente lautet:

Datentyp

::=statisches Datenelement von Die Klasse Es gibt zwei Zugriffsformen:

. oder ::

wenn statisches Datenelement Zugriff Wenn die Berechtigungen dies zulassen (d. h. öffentliche Mitglieder), können Sie im Programm gemäß dem oben genannten Format auf statische Datenelemente verweisen.

Statische Datenelemente werden hauptsächlich verwendet, wenn jedes Objekt über die verfügt gleiches Element Attribut . Beispielsweise ist für eine Einlagenklasse der Zinssatz für jede Instanz derselbe. Daher sollten Zinsen als statisches Datenelement der Einlagenklasse festgelegt werden. Dies hat zwei Vorteile: Unabhängig davon, wie viele Einzahlungsklassenobjekte definiert sind, teilen sich die Zinsdatenmitglieder den im globalen Datenbereich zugewiesenen Speicher, sodass Speicherplatz gespart wird. Zweitens: Sobald die Zinsen geändert werden müssen, werden die Zinsen aller Einlagenobjekte geändert, solange sie einmal geändert werden

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Initialisierungsbeispiele für statische 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