Heim  >  Artikel  >  Backend-Entwicklung  >  Magische Methoden und magische Konstanten in PHP

Magische Methoden und magische Konstanten in PHP

不言
不言Original
2018-06-01 16:30:021836Durchsuche

Dieser Artikel stellt hauptsächlich die magischen Methoden und magischen Konstanten in PHP vor. Er hat einen gewissen Referenzwert. Jetzt können Freunde in Not darauf zurückgreifen >

Magische Methode

__construct()Konstruktionsmethode

Fügen Sie beim Instanziieren eines Objekts einige in Klammern eingeschlossene Parameterlisten nach dem Klassennamen hinzu (die als tatsächliche Parameter des Konstruktors verstanden werden können)

__destruct()

Die Destruktormethode

ist ein Paar mit der Konstruktionsmethode, und die Konstruktionsmethode befindet sich in einem ObjektDas ist es Wird automatisch aufgerufen, wenn es „geboren“ wird, und die Destruktormethode wird automatisch vom System aufgerufen, wenn ein Objekt „verschwindet“!

Die Destruktormethode wird aufgerufen, bevor das Objekt verschwindet

Mehrere Situationen, in denen das Objekt verschwindet

1,

Verwenden Sie explizit die Funktion unset, um eine Variable zu zerstören

2, Nachdem das Skript ausgeführt wurde, wird es ebenfalls automatisch zerstört

3,

Das Ändern des Werts der Objektvariablen wird ebenfalls automatisch zerstört

Die Rolle der Destruktormethode

Die Hauptaufgabe besteht darin, die vom Objekt belegten zusätzlichen Ressourcen freizugeben! Eher als das Objekt selbst!


Hinweis:

Die Destruktormethode erfordert normalerweise keine zusätzlichen Definitionen. Sie muss nur definiert werden, wenn zusätzliche Ressourcen (Ressourcen, die nicht zu diesem Objekt gehören) freigegeben werden!

Fassen Sie die Merkmale von Konstruktionsmethoden und Destruktormethoden zusammen:

1, werden alle durch __ dargestellt Beginnt mit

2, ruft automatisch

3 auf,

ruft die entsprechende Methode nur auf, wenn eine bestimmte Situation auftritt

Es gibt viele Methoden in PHP

, die gleichzeitig die oben genannten drei Merkmale erfüllen, die als „magische Methoden“ bezeichnet werden!

__clone()Diese magische Methode wird beim Klonen eines Objekts automatisch aufgerufen

Klont ein Objekt Die Magic-Methode wird automatisch aufgerufen, wenn das Objekt erstellt wird! Verantwortlich für die Initialisierung der neuen geklonten Objekte!

__set()Weisen Sie einer unzugänglichen Eigenschaft einen Wert zu

Weisen Sie Attributen Werte zu, auf die nicht zugegriffen werden kann

: __set() Sobald die magische Methode __set() definiert ist und

einer unzugänglichen Eigenschaft einen Wert zuweist, wird automatisch ausgeführt. Bei dieser Methode wird die Rechenleistung zu diesem Zeitpunkt dem Benutzer selbst übertragen! Diese magische Methode erfordert zwei Parameter:

Einer ist der Attributname des unzugänglichen Attributs

Einer ist der Wert des unzugänglichen Eigentums


__get()Ermitteln Sie den Wert einer unzugänglichen Eigenschaft

Den Wert einer unzugänglichen Eigenschaft abrufen: __get()

Sobald die magische Methode __get() definiert ist, den Wert eines unzugänglichen Attributs erhält, führt diese Methode automatisch aus. Zu diesem Zeitpunkt wird die Rechenleistung dem Benutzer selbst übergeben!

Diese magische Methode erfordert nur einen Parameter, nämlich den Attributnamen des Attributs!


Hinweis:

__get und __set werden häufig in realen Projekten verwendet. Sie alle erscheinen paarweise! Darüber hinaus werden diese beiden Methoden häufig verwendet, um die privaten Eigenschaften von Objekten stapelweise zu verarbeiten!


Der obige Code ist in Ordnung Beschränken Sie das Hinzufügen von Attributen durch Benutzer, um sicherzustellen, dass sich die ursprüngliche interne Struktur der Attribute nicht ändert!


__unset()Unzugängliche Attribute entfernen

Unzugängliche Attribute löschen: __unset()

Im Allgemeinen können Sie mit der Funktion unset eine öffentliche Datei löschen Eigenschaft eines Objekts:

Wenn die Eigenschaft jedoch nicht zugänglich ist (z. B. privat oder nicht vorhanden ist), wird die __unset wird automatisch ausgeführt. Ob die Löschung erfolgreich sein kann, hängt von der internen Implementierung von __unset ab!

Diese Methode erfordert auch nur einen Parameter, nämlich den Namen des aktuell gelöschten Attributs!


Wenn in

__unset nichts gemacht wird, ist die Standardeinstellung Cannot gelöscht werden (natürlich wird kein Fehler gemeldet!)

__isset()

Bestimmen Sie, ob das unzugängliche Attribut vorhanden ist

Bestimmen Sie, ob das unzugängliche Attribut vorhanden ist: __isset()

Wenn das Attribut ein unzugängliches Attribut ist, wird es automatisch ausgelöst, wenn beurteilt wird, ob das Attribut vorhanden ist Ausführung!

In ähnlicher Weise erfordert diese Methode auch einen Parameter, den Attributnamen, den die Technologie derzeit ermitteln muss!

__call()Beim Aufruf einer unzugänglichen Objektmethode (nicht statische Methode)

Beim Aufruf einer unzugänglichen Objektmethode (nicht statische Methode). ) Statische Methode), die magische Methode wird automatisch ausgeführt!

Denken:

Wie viele Parameter benötigt diese magische Methode derzeit?

Parameter 1: Methodenname, ZeichenfolgeTyp

Parameter 2: Array Typ, da die Anzahl der Parameter ungewiss ist, können alle Parameter nur in ein Array

eingefügt werden Wenn diese Methode nichts bewirkt:

__callstatic()Rufen Sie eine unzugängliche Klassenmethode (statische Methode) auf

Wenn eine nicht zugängliche Klassenmethode (statische Methode) aufgerufen wird, wird die magische Methode automatisch ausgeführt. Wenn Sie diese Methode definieren, müssen Sie vor dem Methodennamen das Schlüsselwort hinzufügen sei eine statische Methode!

Ein kleiner Fall

Entwerfen Sie einen Mathematikunterricht, um die folgenden Ziele zu erreichen:

Aufrufmethode f1:

1, Wenn 1 Parameter übergeben werden, wird der Quadratwert zurückgegeben

2 , Wenn 2 Parameter übergeben werden, wird die Summe ihrer Quadrate zurückgegeben

3, wie werden 3 Parameter übergeben, die Summe ihrer Würfel zurückgeben

wird durch Methodenüberladung erreicht:

__invoke()

Wenn wir das Objekt als Funktion (oder Methode) aufrufen, wird die magische Methode automatisch ausgeführt! Derzeit wird es nicht sehr häufig verwendet!

Erinnern Sie sich an die anonymen Funktionen, die Sie zuvor gelernt haben:

Hinweis:

Der Grund, warum Sie das Abschlussobjekt $func verwenden können, um die Funktion erfolgreich aufzurufen, liegt darin, dass es eine __invokemagische Methode

__toString()

Wenn wir ein Objekt als String verwenden, wird die Imitationsmethode automatisch ausgeführt!

Und der Rückgabewert dieser Methode kann im Allgemeinen das Ergebnis der Serialisierung des Objekts in einen String sein!

Tatsächlich löst das System automatisch die Ausführung der __toString-Methode aus:

Magic Constant

__CLASS__

steht für den aktuellen Klassennamen!

Beachten Sie den Unterschied zu self:

self

bezieht sich auf die Klasse selbst ( A Struktur, die mehr als nur den Klassennamen enthält), während __CLASS__ nur ein Klassenname ist (der Klassenname ist nur ein Teil der Klasse!)

__METHOD__

stellt den aktuellen Methodennamen dar!

Mehrere PHP „magische Konstanten“

Name

Beschreibung

__LINE__

Die aktuelle Zeilennummer in der Datei.

__DATEI__

Der vollständige Pfad und Dateiname der Datei. Bei Verwendung innerhalb einer eingebundenen Datei wird der Name der eingebundenen Datei zurückgegeben.

__DIR__

Das Verzeichnis, in dem sich die Datei befindet. Bei Verwendung innerhalb einer eingebundenen Datei wird das Verzeichnis zurückgegeben, in dem sich die eingebundene Datei befindet. Es entspricht dirname(__FILE__). Verzeichnisnamen enthalten keinen abschließenden Schrägstrich, es sei denn, es handelt sich um das Stammverzeichnis.

__FUNCTION__

Funktionsname. Diese Konstante gibt den Namen der Funktion zum Zeitpunkt ihrer Definition zurück (Groß-/Kleinschreibung beachten).

__CLASS__

Der Name der Klasse gibt den Namen zurück, als die Klasse definiert wurde (Groß-/Kleinschreibung). empfindlich) . Beachten Sie, dass __CLASS__ seit PHP 5.4 auch für Merkmale funktioniert. Bei Verwendung innerhalb einer Trait-Methode ist __CLASS__ der Name der Klasse, die die Trait-Methode aufruft.

__TRAIT__

Der Name des Merkmals. Seit PHP 5.4 gibt diese Konstante den Namen des Merkmals so zurück, wie es definiert wurde (Groß-/Kleinschreibung beachten). Der Merkmalsname enthält den Bereich, in dem er deklariert ist (z. B. FooBar).

__METHOD__

Der Methodenname der Klasse (neu hinzugefügt in PHP 5.0.0). Gibt den Namen der Methode so zurück, wie er definiert wurde (Groß-/Kleinschreibung beachten).

__NAMESPACE__

Der Name des aktuellen Namespace (Groß- und Kleinschreibung beachten).

Das obige ist der detaillierte Inhalt vonMagische Methoden und magische Konstanten in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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