Überblick über die neue magische Methode __invoke in PHP 5.3
PHP hat seit Version 5.3 eine neue magische Methode namens __invoke hinzugefügt. Mit dieser Methode können Sie das Objekt direkt nach dem Erstellen der Instanz aufrufen. Wie im folgenden Beispiel gezeigt:
class testClass { public function __invoke { print "hello world"; } } $n = new testClass; $n();
Das Ausführungsergebnis ist:
hello world。
Das offizielle Beispiel für PHP lautet wie folgt:
class CallableClass { public function __invoke($x) { var_dump($x); } } $obj = new CallableClass; $obj(5); var_dump(is_callable($obj));
Anhang: Detaillierte Erklärung anderer magischer PHP-Methoden:
Klassen in PHP können magische Methoden verwenden. Es legt fest, dass Methoden, die mit zwei Unterstrichen (__) beginnen, als magische Methoden reserviert sind. Daher wird empfohlen, dass Funktionsnamen nicht mit __ beginnen, es sei denn, dies dient dazu, eine vorhandene magische Methode zu überladen.
Die Funktionsnamen __construct, __destruct, __call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __invoke, __set_state und __clone sind in PHP-Klassen nicht magisch Ihrer Klassen, es sei denn, Sie möchten die damit verbundene magische Funktionalität.
Die folgenden beiden Methoden sind für Eigenschaften konzipiert, die nicht in der Klasse und ihrer übergeordneten Klasse deklariert sind.
__get($property) Diese Methode wird ausgelöst, wenn eine undefinierte Eigenschaft aufgerufen wird, und der übergebene Parameter ist der Name der Eigenschaft, auf die zugegriffen wird.
__set($property,$value) Wenn einer undefinierten Eigenschaft ein Wert zugewiesen wird, wird diese Methode ausgelöst und die übergebenen Parameter sind der Eigenschaftsname und der festzulegende Wert.
Die Nichtdeklaration umfasst hier Attribute, deren Zugriffskontrolle geschützt und privat ist (d. h. Attribute, die keine Zugriffsberechtigung haben), wenn sie mithilfe von Objekten aufgerufen werden.
Wie bei der __get-Methode und der __set-Methode umfasst das Nichtdeklarierte hier Attribute, deren Zugriffskontrolle geschützt und privat ist (d. h. Attribute, die keine Zugriffsberechtigung haben), wenn sie mithilfe eines Objekts aufgerufen werden.
Zu den undefinierten Methoden gehören Methoden, die keine Zugriffsberechtigung haben. Wenn die Methode nicht vorhanden ist, suchen Sie nach der Methode. Wenn sie in der übergeordneten Klasse nicht vorhanden ist, rufen Sie den __call auf ()-Methode dieser Klasse. Wenn die __call()-Methode in dieser Klasse nicht vorhanden ist, wechseln Sie zur __call()-Methode in der übergeordneten Klasse.
__autoload-Funktion, die automatisch aufgerufen wird, wenn versucht wird, eine Klasse zu verwenden, die noch nicht definiert wurde. Durch den Aufruf dieser Funktion hat die Skript-Engine eine letzte Chance, die erforderlichen Klassen zu laden, bevor PHP mit einem Fehler abstürzt.
Hinweis: In der __autoload-Funktion ausgelöste Ausnahmen können nicht vom Catch-Anweisungsblock abgefangen werden und verursachen schwerwiegende Fehler. Sie sollten daher in der Funktion selbst abgefangen werden.
__construct Konstruktormethode, diese Methode wird aufgerufen, wenn ein Objekt erstellt wird. Der Vorteil dieser Methode im Vergleich zu PHP4 besteht darin, dass die Konstruktormethode einen eindeutigen Namen haben kann, unabhängig vom Namen der Klasse im. Auf diese Weise müssen Sie den Namen des Konstruktors nicht ändern, wenn Sie den Namen der Klasse ändern.
__destruct Destruktormethode, PHP ruft diese Methode auf, bevor das Objekt zerstört wird (dh bevor es aus dem Speicher gelöscht wird). Standardmäßig gibt PHP nur den von Objekteigenschaften belegten Speicher frei und zerstört objektbezogene Ressourcen. Mit dem Destruktor können Sie beliebigen Code ausführen, um den Speicher nach der Verwendung eines Objekts zu löschen. Wenn PHP entscheidet, dass Ihr Skript nicht mehr mit dem Objekt verknüpft ist, wird der Destruktor aufgerufen.
Im Namensraum einer Funktion geschieht dies, wenn die Funktion zurückkehrt. Bei globalen Variablen geschieht dies am Ende des Skripts. Wenn Sie ein Objekt explizit zerstören möchten, können Sie der Variablen, die auf das Objekt zeigt, einen beliebigen anderen Wert zuweisen. Weisen Sie die Variable normalerweise auf Null zu oder rufen Sie unset auf.
Die Objektzuweisung in PHP5 verwendet die Referenzzuweisung. Wenn Sie diese Methode aufrufen, ruft das Objekt bei Bedarf automatisch die __clone-Methode auf Bestimmte Vorgänge beim Kopieren des Objekts Der Initialisierungsvorgang kann in der __clone-Methode implementiert werden.
__tostring-Methode wird automatisch aufgerufen, wenn ein Objekt in eine Zeichenfolge konvertiert wird, beispielsweise wenn echo zum Drucken des Objekts verwendet wird.
Vor php5.2.0 kann die __tostring-Methode nur wirksam werden, wenn sie in Kombination mit echo() oder print() verwendet wird. Nach php5.2.0 kann es in jeder String-Umgebung wirksam werden (z. B. über printf() unter Verwendung des %s-Modifikators), es kann jedoch nicht in Nicht-String-Umgebungen verwendet werden (z. B. unter Verwendung des %d-Modifikators). Wenn ab PHP5.2.0 ein Objekt, das die __tostring-Methode nicht definiert, in einen String konvertiert wird, wird ein e_recoverable_error-Fehler gemeldet.
__wakeup Rufen Sie beim Deserialisieren
serialize() auf, um zu überprüfen, ob es in der Klasse eine Funktion mit dem magischen Namen __sleep gibt. Wenn dies der Fall ist, wird die Funktion vor der Serialisierung ausgeführt. Es löscht das Objekt und sollte ein Array zurückgeben, das die Namen aller Variablen im Objekt enthält, die serialisiert werden sollen.
Der Zweck der Verwendung von __sleep besteht darin, alle Datenbankverbindungen des Objekts zu schließen, ausstehende Daten zu übermitteln oder ähnliche Bereinigungsaufgaben durchzuführen. Darüber hinaus ist diese Funktion nützlich, wenn Sie sehr große Objekte haben, die nicht vollständig eingelagert werden müssen.
PHP Umgekehrt prüft unserialize() die Existenz einer Funktion mit dem magischen Namen __wakeup. Diese Funktion kann alle Ressourcen rekonstruieren, über die das Objekt verfügt, sofern vorhanden. Der Zweck der Verwendung von __wakeup besteht darin, alle Datenbankverbindungen wiederherzustellen, die möglicherweise während der Serialisierung verloren gegangen sind, und andere Neuinitialisierungsaufgaben zu erledigen.
Beim Versuch, ein Objekt durch Aufrufen einer Funktion aufzurufen, wird automatisch die __invoke-Methode aufgerufen.
Sie funktioniert ähnlich wie die magische Methode __call(), __callstatic() dient der Verarbeitung statischer Methodenaufrufe.
PHP verschärft die Definition der Methode __callstatic(); sie muss öffentlich sein und als statisch deklariert werden. Ebenso muss die magische Methode __call() wie alle anderen magischen Methoden als öffentlich definiert werden.
Weitere Artikel über die neue magische Methode __invoke in PHP 5.3 finden Sie auf der chinesischen PHP-Website!

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

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...
