Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der Eigenschaften und Methoden statischer PHP-Variablen und der Verwendung der verzögerten Bindung

Detaillierte Erläuterung der Eigenschaften und Methoden statischer PHP-Variablen und der Verwendung der verzögerten Bindung

伊谢尔伦
Freigeben: 2023-03-12 06:50:01
Original
1623 Leute haben es durchsucht

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 Bindung

zu definieren. 1.

Statische Variable statische Variable

Statische 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

vor der Variablen hinzu.

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]
*/
Nach dem Login kopieren
rekursive Funktionen

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 Klassen

Es 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.

2.1, Statische Eigenschaften

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::-Bereich
class 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]
 *
 */
Nach dem Login kopieren
verwenden, müssen Sie das $-Symbol nach dem Operator hinzufügen. Dies kann nicht in Code außerhalb der Klasse verwendet werden. und es erkennt seine Position in der Vererbungsbaumhierarchie nicht. Wenn self::scope in einer erweiterten Klasse verwendet wird, kann self in der Basisklasse deklarierte Methoden aufrufen, es ruft jedoch immer Methoden auf, die in der erweiterten Klasse überschrieben wurden.

parent:: Wenn in der erweiterten Klasse die Basisklassenmethode überschrieben wird und Sie auf die Basisklassenmethode zugreifen möchten, können Sie parent::

static:: verwenden, um We zu verwenden self:: und parent:: müssen nicht mehr verwendet werden. 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.

2.3,

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();
Nach dem Login kopieren
2.4,

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!

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