


Analyse des Unterschieds zwischen new self() und new static() in PHP
Dieser Artikel stellt hauptsächlich den Unterschied zwischen new self() und new static() in PHP vor. Er hat einen gewissen Referenzwert.
1.new static() ist neu Funktionen, die in der PHP-Version 5.3 eingeführt wurden.
2. Ob new static() oder new self(), ein neues Objekt ist neu.
3. Was ist der Unterschied zwischen den von new in diesen beiden Methoden erzeugten Objekten? Ist das von new erzeugte Objekt dieselbe Klasseninstanz oder eine andere Klasseninstanz?
Um das obige Problem zu untersuchen, beginnen wir mit einem einfachen Code:
class Father { public function getNewFather() { return new self(); } public function getNewCaller() { return new static(); } } $f = new Father(); print get_class($f->getNewFather()); print get_class($f->getNewCaller());
Beachten Sie, dass die get_class()-Methode von Der obige Code wird verwendet, um den Klassennamen abzurufen, zu dem die Instanz gehört.
Das Ergebnis hier ist: Unabhängig vom Aufruf von getNewFather() oder getNewCaller() wird eine Instanz der Father-Klasse zurückgegeben.
Das gedruckte Ergebnis ist: FatherFather
Zu diesem Zeitpunkt scheint es keinen Unterschied zwischen new self() und new static() zu geben. Machen wir weiter:
class Sun1 extends Father { } class Sun2 extends Father { } $sun1 = new Sun1(); $sun2 = new Sun2(); print get_class($sun1->getNewFather()); print get_class($sun1->getNewCaller()); print get_class($sun2->getNewFather()); print get_class($sun2->getNewCaller());
Wenn man sich den Code oben ansieht, hat die Vaterklasse jetzt zwei Unterklassen, aufgrund von getNewFather() und getNewCaller() des Vaters Die Klasse ist öffentlich, daher erben Unterklassen diese beiden Methoden.
Das gedruckte Ergebnis ist: FatherSun1FatherSun2
Wir haben festgestellt, dass das durch den Aufruf von getNewFather() zurückgegebene Objekt unabhängig davon, ob es Sun1 oder Sun2 ist, eine Instanz der Father-Klasse ist, während getNewCaller() das zurückgibt Anruf Beispiele für
Das heißt, $sun1 gibt eine Instanz der Sun1-Klasse zurück und $sun2 gibt eine Instanz der Sun2-Klasse zurück.
Jetzt scheine ich den Unterschied zwischen new self() und new static() zu verstehen.
Erstens kann sich ihr Unterschied nur in der Vererbung widerspiegeln. Wenn es keine Vererbung gibt, gibt es keinen Unterschied zwischen den beiden.
Dann bleibt die von new self() zurückgegebene Instanz über Tausende von Jahren unverändert. Unabhängig davon, wer sie aufruft, wird sie eine Instanz derselben Klasse zurückgeben, während new static() vom Aufrufer bestimmt wird.
Der Aufrufer von $sun1->getNewCaller() oben ist $sun1, richtig! $sun1 ist eine Instanz der Klasse Sun1, daher wird eine Instanz der Klasse Sun1 zurückgegeben. Der gleiche Grund für $sun2 wird nicht wiederholt.
Verwandte Empfehlungen:
Was ist der Unterschied zwischen new self() und new static() in PHPWas ist der Unterschied zwischen
Das obige ist der detaillierte Inhalt vonAnalyse des Unterschieds zwischen new self() und new static() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden PHP -Datenobjekte (PDO) erörtert, eine Erweiterung für den Datenbankzugriff in PHP. Es zeigt die Rolle von PDO bei der Verbesserung der Sicherheit durch vorbereitete Aussagen und deren Vorteile gegenüber MySQLI, einschließlich Datenbankabstraktion und besserer Fehlerbehandlung.

Memcache und Memcached sind PHP -Caching -Systeme, die Web -Apps beschleunigen, indem die Datenbanklast reduziert wird. Eine einzelne Instanz kann zwischen Projekten mit sorgfältigem Schlüsselmanagement geteilt werden.

In Artikel werden Schritte zum Erstellen und Verwalten von MySQL -Datenbanken mithilfe von PHP erörtert und konzentriert sich auf Verbindung, Erstellung, gemeinsame Fehler und Sicherheitsmaßnahmen.

In dem Artikel wird erläutert, wie JavaScript und PHP aufgrund ihrer unterschiedlichen Umgebungen indirekt durch HTTP -Anfragen interagieren. Es deckt Methoden zum Senden von Daten von JavaScript an PHP ab und zeigt Sicherheitsüberlegungen wie Datenvalidierung und Protokoll

Pear ist ein PHP -Framework für wiederverwendbare Komponenten, die die Entwicklung mit Paketmanagement, Codierungsstandards und Unterstützung der Community verbessern.

PHP ist eine vielseitige Skriptsprache, die hauptsächlich für die Webentwicklung verwendet wird und dynamische Seiten erstellt, und kann auch für Befehlszeilen-Skript-, Desktop-Apps und API-Entwicklung verwendet werden.

In dem Artikel werden 1995 die Entwicklung von PHP von "Personal Home Page Tools" von "PHP: Hypertext Precessor" im Jahr 1998 erörtert, was seine erweiterte Verwendung über persönliche Websites hinaus widerspiegelt.

Zu den wirksamen Methoden zur Verhinderung fester Sitzungsangriffe gehören: 1. Regenerieren Sie die Sitzungs -ID, nachdem sich der Benutzer angemeldet hat; 2. Verwenden Sie einen sicheren Algorithmus für Sitzungs -ID -Generierung; 3.. Implementieren Sie den Timeout -Mechanismus für Sitzungen; 4. Verschlüsseln Sie Sitzungsdaten mithilfe von HTTPS. Diese Maßnahmen können sicherstellen, dass die Anwendung bei festgelegten Sitzungen unzerstörbar ist.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software
