Heim > Artikel > Backend-Entwicklung > Vergleichende Analyse von Anwendungsbeispielen statischer Klassen und statischer Variablen in PHP
Dieser Artikel stellt hauptsächlich den Unterschied zwischen der Verwendung statischer Klassen und statischer Variablen in PHP vor. Er analysiert die Definition, Funktion und Verwendungsfähigkeiten statischer Klassen und statischer Variablen in PHP detaillierter anhand von Beispielen it
Dieser Artikel analysiert den Unterschied zwischen der Verwendung statischer Klassen und statischer Variablen in PHP anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:
Statisch bedeutet, ein statisches Objekt oder eine statische Variable zu definieren. Was die Eigenschaften von Variablen oder Klassenmethoden betrifft, die durch Statik definiert werden, werden wir nach dem Lesen der relevanten Beispiele in diesem Artikel erfahren.
1. Erstellen Sie ein Objekt$object = new Class() und verwenden Sie dann „->“, um Folgendes aufzurufen: $object->attribute/function, vorausgesetzt, die Variable/Methode ist zugänglich.
2. Klassenmethoden/-variablen direkt aufrufen: class::attribute/function, ob statisch oder nicht statisch, aber es gibt Voraussetzungen.
A Variable muss auf die Variable zugegriffen werden können.
B. Wenn es sich um eine Methode handelt, muss sie zusätzlich zu den folgenden Anforderungen erfüllt sein: , es gibt keine besonderen Bedingungen.
② Wenn es sich um eine nicht statische Methode handelt, muss geändert werden, dass $this in der Methode nicht verwendet wird, d. h. nicht statische Variablen/Methoden werden nicht aufgerufen . Natürlich ist es kein Problem, statische Variablen/Methoden aufzurufen.
Dann schauen wir uns die Verwendung von $object->… an und was sind die Unterschiede zwischen der Verwendung von class::…:
1. Wenn Sie $object->… verwenden, müssen Sie den
Konstruktorausführen, um ein Objekt zu erstellen.2. Verwenden Sie die Klasse: :…, um statische Methoden/Variablen aufzurufen, ohne sie auszuführen der Konstruktor zum Erstellen von Objekten.
3. Verwenden Sie class::…, um nicht statische Methoden/Variablen aufzurufen, ohne den Konstruktor zum Erstellen von Objekten auszuführen.
Dann kommt das Seltsame heraus und 3 sind gleich. Welchen Sinn hat die Existenz statischer Methoden/Variablen?
Statisch statisch: Wenn Sie ein Klassenmitglied oder eine Methode als statisch deklarieren, können Sie direkt darauf zugreifen, ohne die Klasse zu instanziieren. Sie können nicht über ein Objekt auf die statischen Mitglieder zugreifen (außer auf statische Methoden). Die Klasse, nicht jede Objektinstanz, aber Objektinstanzen von Klassen können geteilt werden.
Beispiel: Der Code lautet wie folgt:
<?php Class Person{ // 定义静态成员属性 public static $country = "中国"; // 定义静态 成员方法 public static function myCountry() { // 内部访问静态成员属性 echo "我是".self::$country."人<br />"; } } class Student extends Person { function study() { echo "我是". parent::$country."人<br />"; } } // 输出成员属性值 echo Person::$country."<br />"; // 输出:中国 $p1 = new Person(); //echo $p1->country; // 错误写法 // 访问静态成员方法 Person::myCountry(); // 输出:我是中国人 // 静态方法也可通过对象访问: $p1->myCountry(); // 子类中输出成员属性值 echo Student::$country."<br />"; // 输出:中国 $t1 = new Student(); $t1->study(); // 输出:我是中国人 ?>Ausführen des Beispiels , die Ausgabe lautet:
China
I I am Chinese
I am Chinese
China
I am Chinese
Zusammenfassung: Um auf statische Elementeigenschaften oder -methoden innerhalb einer Klasse zuzugreifen , verwenden Sie self:: (nicht $slef beachten). Der Code lautet wie folgt:
slef:: $country slef:: myCountry()Statische Mitglieder mit externem Zugriff
parent:: $country parent:: myCountry()Attribute und Methoden
sind Klassennamen/Unterklassennamen::, der Code lautet wie folgt:
Aber auf statische Methoden kann auch über gewöhnliche Objekte zugegriffen werdenPerson::$country Person::myCountry() Student::$countryBeispiele, Deklarationen Statische Variablen, der Code lautet wie folgt:
<?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; } ?>
<?PHP function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } ?>Jetzt wird bei jedem Aufruf der Test()-Funktion $ ausgegeben. Der Wert von w3sky wird um eins erhöht
Statisch Variablen bieten auch eine Möglichkeit, mit
umzugehen. Seien Sie beim Schreiben rekursiver Funktionen vorsichtig, da Sie sicherstellen müssen, dass eine ausreichende Methode vorhanden ist Um die Rekursion zu beenden, nehmen wir diese einfache Funktion, um rekursiv bis 10 zu zählen. Verwenden Sie die statische Variable $count, um zu bestimmen, wann gestoppt werden soll. Beispiel, statische Variablen und rekursive Funktionen, der Code lautet wie folgt:
Hinweis: Statische Variablen können gemäß dem obigen Beispiel deklariert werden. Wenn das Ergebnis des<?PHP function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test(); } $count--; } ?>-Ausdrucks
verwendet wird, um ihm in der Deklaration einen Wert zuzuweisen, führt dies zu einem Analysefehler .
Das obige ist der detaillierte Inhalt vonVergleichende Analyse von Anwendungsbeispielen statischer Klassen und statischer Variablen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!