Eine kurze Analyse des Unterschieds zwischen statisch und selbst in PHP-Klassen

Eine kurze Analyse des Unterschieds zwischen statisch und selbst in PHP-Klassen

Verwenden Sie self:: oder __CLASS__, um eine statische Referenz auf die aktuelle Klasse zu erhalten, abhängig von der Klasse, in der die Methode definiert ist:

Bei Verwendung von static:: wird nicht mehr in die Klasse aufgelöst, in der die aktuelle Methode definiert ist, sondern die Berechnung erfolgt erst zur Laufzeit. Es kann auch als „statische Bindung“ bezeichnet werden, da es zum Aufrufen statischer Methoden verwendet werden kann (aber nicht darauf beschränkt ist).

Die statische Bindung ist eine in PHP 5.3.0 hinzugefügte Funktion, die zum Verweisen auf statisch aufgerufene Klassen im Vererbungsbereich verwendet wird.

Der Unterschied zwischen static und self in PHP-Klassen. Wir sehen oft self und static in der Definition von PHP-Klassen. Beim Ausführen stellen wir oft fest, dass die Ergebnisse nicht unterschiedlich sind, aber es gibt definitiv einen Unterschied. Wenn es keinen Unterschied gibt, warum gibt es dann zwei?

1. Der Unterschied zwischen den beiden

Statisch verwendet verzögerte Bindung

Daher kann static genau erkennen, ob es sich um einen Aufruf der übergeordneten oder der untergeordneten Klasse handelt.

Dies zeigt beispielsweise, dass Static ein kluges Kind ist. Er kann alle seine Verwandten genau erkennen.

Selbst ist ein bisschen dumm, er kennt nur die eigenen Eltern

2. Code sieht anders aus

Dies ist aus dem folgenden Code ersichtlich

Selbst bezieht sich auf die Klasse, die ihn definiert, das heißt, er kennt nur seine eigenen Eltern

static bezieht sich auf die Klasse, die ihn aufruft, d. h. er kann seine Verwandten erkennen

<?php
Klasseneltern
{
    geschützter statischer $name = „Ich bin dein Elternteil“;
 
    öffentliche statische Funktion who_self()
    {
        gibt selbst zurück::$name;
    }
 
    öffentliche statische Funktion who_static()
    {
        gibt statisch zurück::$name;
    }
 
    öffentliche statische Funktion get_self()
    {
        gib ein neues Selbst zurück();
    }
 
    öffentliche statische Funktion get_static()
    {
        gib ein neues static() zurück;
    }
}
 
Klasse Verwandte erweitert Eltern
{
    geschützter statischer $name = „Ich bin Ihr Verwandter“;
}
 
var_dump(kinsfolk::who_self()); //Ich bin dein Elternteilvar_dump(kinsfolk::who_static()); //Ich bin dein Verwandtervar_dump(kinsfolk::get_self()); //Objekt(Eltern)#1 (0) {}
var_dump(kinsfolk::get_static()); //Objekt(kinsfolk)#1 (0) {}

Einfach ausgedrückt:

„Self“ ist die Klasse, in der es geschrieben wird, und diese Klasse wird tatsächlich aufgerufen.

static stellt die verwendete Klasse dar, d. h. das static, das Sie in der übergeordneten Klasse geschrieben haben. Anschließend wird es von der Unterklasse überschrieben und die Methode oder das Attribut der Unterklasse wird verwendet

Zusammenfassen

Dies ist das Ende dieses Artikels über den Unterschied zwischen statisch und selbst in der PHP-Klasse. Weitere Informationen zum Unterschied zwischen statisch und selbst in der PHP-Klasse finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • PHP implementiert zwei Möglichkeiten zum Planen von Klassen
  • Detaillierte Analyse der Unterschiede zwischen PHP7 und PHP5
  • Zwei Möglichkeiten zum Generieren von Benutzerkennwörtern in PHP
  • So verwenden Sie PDO in PHP zum Bedienen großer Datenobjekte
  • PHP verwendet das Workman-Framework, um Socket-Dienste zu implementieren und eine Verbindung zu Clients herzustellen

<<:  Ändern Sie die Startzeit von Grub in Ubuntu

>>:  Erklärung der MySQL-Indextypen Normal, Unique und Full Text

Artikel empfehlen

Detaillierte Erläuterung der Vue-Formularbindung und -Komponenten

Inhaltsverzeichnis 1. Was ist bidirektionale Date...

IE8 verwendet den Multikompatibilitätsmodus, um Webseiten normal anzuzeigen

IE8 wird mehrere Kompatibilitätsmodi haben. Der IE...

CSS, um horizontale Linien auf beiden Seiten des mittleren Textes zu erreichen

1. Die Eigenschaft „vertical-align“ erzielt folge...

Detaillierte Erklärung zur Formatierung von Zahlen in MySQL

Aus beruflichen Gründen musste ich kürzlich Zahle...

Erste Schritte Tutorial für Anfänger: Domänennamenauflösung und Bindung

Wie können Sie also nach der Registrierung eines ...

Docker+Nextcloud zum Erstellen eines persönlichen Cloud-Speichersystems

1. Docker-Installation und -Start yum installiere...

Funktionen in TypeScript

Inhaltsverzeichnis 1. Funktionsdefinition 1.1 Fun...

HTML-Tutorial: Sammlung häufig verwendeter HTML-Tags (5)

Diese eingeführten HTML-Tags entsprechen nicht un...

Natives JS zur Implementierung der Formularvalidierungsfunktion

Inhaltsverzeichnis Bei der Entwicklung kann eine ...

Adaptive HTML-Tabellenmethode

<body style="scroll:no"> <Tabe...