Das Typschlüsselwort statischer Variablen ist static. In diesem Artikel geht es hauptsächlich darum, die Verwendung statischer Eigenschaften und statischer Methoden in PHP zu erlernen. Außerdem kann das Schlüsselwort „Static“ (statisch) zum Definieren statischer Methoden und Eigenschaften verwendet werden um statische Variablen und
späte statische BindungStatische Variable statische VariableStatische Variablen existieren nur im lokalen Funktionsbereich, aber wenn die Programmausführung diesen Bereich verlässt, geht ihr Wert nicht verloren. Mit anderen Worten: Die Variable behält ihren ursprünglichen Wert bei, wenn diese Funktion das nächste Mal ausgeführt wird. Um eine Variable als statisch zu definieren, fügen Sie einfach das
statische Schlüsselwort Statische Variablen bieten auch eine Möglichkeit,function testing() { static $a = 1; $a *= 2; echo $a."\n"; } testing(); testing(); testing(); testing(); /** * 2 * 4 * 8 * 16 * [Finished in 0.1s] */
zu verarbeiten. Eine rekursive Funktion ist eine Funktion, die sich selbst aufruft. Seien Sie beim Schreiben rekursiver Funktionen vorsichtig, da diese möglicherweise auf unbestimmte Zeit rekursiv sind. Sie müssen sicherstellen, dass es geeignete Möglichkeiten gibt, die Rekursion zu beenden. In diesem Beispiel speichert die Funktion „testing()“ nach jeder Ausführung intern den Wert der Variablen „$a“. Beim nächsten Aufruf von „testing()“ wird der Wert von $a wiederhergestellt, und „testing()“ multipliziert diesen Wert mit 2 und gibt ihn aus. Der anfängliche Standardwert einer Variablen ist 1, und diese Zuweisung erfolgt nur bei der ersten Initialisierung der Variablen. Diese Operation wird nicht bei jeder Ausführung der Funktion aufgerufen.
2.
Verwendung statischer Elemente in KlassenEs gibt zwei Hauptverwendungen des Schlüsselworts static in Klassen: Eine wird zum Definieren statischer Elemente verwendet, die andere Art ist Wird verwendet, um statische Methoden zu definieren. Wenn Sie eine Klasseneigenschaft oder Methode als „statisch“ deklarieren, können Sie direkt darauf zugreifen, ohne die Klasse zu instanziieren. Auf statische Eigenschaften kann nicht über ein Objekt einer instanziierten Klasse zugegriffen werden (statische Methoden jedoch schon). Auf statische Eigenschaften kann von Objekten nicht über den ->-Operator zugegriffen werden. Innerhalb der Klasse können wir den Bereichsqualifizierungsoperator verwenden, um auf Variablen auf verschiedenen Geltungsbereichsebenen zuzugreifen.
Da statische Methoden nicht über Objekte aufgerufen werden müssen, ist die Pseudovariable $this in statischen Methoden nicht verfügbar. Man kann sich statische Variablen so vorstellen, dass sie zur gesamten Klasse und nicht zu einer Instanz der Klasse gehören. Im Gegensatz zu allgemeinen Instanzvariablen behalten statische Eigenschaften nur einen Variablenwert bei, und dieser Variablenwert ist für alle Instanzen gültig, was bedeutet, dass alle Instanzen diese Eigenschaft gemeinsam nutzen.
$dieser Zeiger ist die aktuelle Instanz der Klasse und ein Verweis auf das aufrufende Objekt. self:: stellt die Klasse selbst dar. Wenn Sie den self::-Bereichclass MyObject { public static $a = 0; function MyMethod() { self::$a += 2; echo self::$a . "\n"; } } $instance1 = new MyObject(); $instance1 -> MyMethod(); $instance2 = new MyObject(); $instance2 -> MyMethod(); /** * * 2 * 4 * [Finished in 0.1s] * */
Statische Methode
Die Regeln für statische Methoden sind die gleichen wie für statische Variablen. Eine Methode kann mit dem Schlüsselwort static als statisch markiert werden, und auf statische Methoden kann über den Namen der Klasse und den Bereichsoperator (::) zugegriffen werden.Es gibt einen wichtigen Unterschied zwischen statischen Methoden und nicht statischen Methoden: Wenn wir eine statische Methode aufrufen, müssen wir keine Instanz der Klasse mehr besitzen.
Der obige Beispielcode ruft die MyOtherMethod-Methode in MyExtendObject korrekt auf und gibt den Aufruf von MyExtendObject aus [Fertig in 0,1 Sekunden].
Wenn eine Methode die Variable $this nicht enthält, sollte diese Methode eine statische Methode sein. Wenn Sie keine Instanz einer Klasse benötigen, sollten Sie auch eine statische Klasse verwenden, die eine Instanziierung überflüssig macht. Darüber hinaus kann die Variable $this nicht in statischen Methoden verwendet werden, da statische Methoden nicht zu einer bestimmten Instanz gehören.
class MyObjectBase { static function MyMethod() { static::MyOtherMethod(); } static function MyOtherMethod() { echo 'called from MyObject.'; } } class MyExtendObject extends MyObjectBase { static function MyOtherMethod() { echo 'called from MyExtendObject.'; } } MyExtendObject::MyMethod();
Lazy binding
static:: macht die Verwendung von self:: und parent:: überflüssig. Sie können static verwenden, wenn Sie auf die letzte Klasse verweisen möchten, die die Funktionalität implementiert. Dieser Qualifizierer berechnet die Mitglieder der letzten Klasse in der Vererbungshierarchie unmittelbar vor der Ausführung des Codes. Dieser Vorgang wird als verzögerte Bindung bezeichnet.3. Zusammenfassung
Verwenden Sie das Schlüsselwort static, um statische Variablen zu erstellen und einen Standardinitialisierungswert bereitzustellen. Statische Variablen sind modifizierte Funktionsvariablen, deren Wert nach Ausführung einer Funktion unverändert bleibt.Das Schlüsselwort
static kann auch in Klassen verwendet werden, um Eigenschaften und Methoden zu ändern. Wenn es für eine Eigenschaft verwendet wird, führt es dazu, dass die Eigenschaft keinen Wert mehr für eine bestimmte Instanz enthält, sondern stattdessen einen Wert für die gesamte Klasse selbst. Statische Eigenschaften können von Mitgliedern gemeinsam genutzt werden.
Um auf statische Methoden zuzugreifen, können Sie (::) verwenden, das als Bereichsqualifizierer bezeichnet wird. Die linke Seite dieses Operators kann ein Klassenname oder ein vordefinierter Bereich sein. Der vordefinierte Bereich umfasst selbst übergeordnete Statik. Die rechte Seite des Operators ist eine statische Methode und Eigenschaft.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Eigenschaften und Methoden statischer PHP-Variablen und der Verwendung der verzögerten Bindung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!