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

Vue implementiert eine gleitende Navigation oben links und rechts

Navigation und andere Dinge werden bei der täglic...

Perfekte Lösung für asynchrone Timeout-Vorgänge im JavaScript-Frontend

Inhaltsverzeichnis Was passiert, wenn die Ausführ...

So erstellen Sie eine MySQL-Master-Slave-Datenbank mit Docker unter MacOS

1. Ziehen Sie das MySQL-Image Holen Sie sich das ...

Implementierung der Docker-Bereitstellung von Django+Mysql+Redis+Gunicorn+Nginx

I. Einleitung Die Docker-Technologie erfreut sich...

So ändern Sie die Längenbeschränkung von group_concat in MySQL

In MySQL gibt es eine Funktion namens „group_conc...

Zusammenfassung einiger wichtiger Punkte zu mysql init_connect

Die Rolle von init_connect init_connect wird norm...

Einführung von ECharts in das Vue-Projekt

Inhaltsverzeichnis 1. Installation 2. Einleitung ...

Implementierung einer coolen 3D-Würfeltransformationsanimation in CSS3

Ich liebe das Programmieren, es macht mich glückl...

Zusammenfassung der Diskussion zur Gültigkeitsdauer von Nginx-Cookies

Bei jedem Besuch wird im Browser Cookie generiert...