Ausführliche Erklärung und Beispielcode von PHP-Verschlüssen
Abschlüsse und anonyme Funktionen wurden in PHP5.3.0 eingeführt.
Ein Abschluss bezieht sich auf eine Funktion, die beim Erstellen den umgebenden Zustand kapselt. Auch wenn die Umgebung, in der sich der Verschluss befindet, nicht mehr existiert, bleibt der im Verschluss eingekapselte Zustand bestehen.
Theoretisch sind Schließungen und anonyme Funktionen unterschiedliche Konzepte. Aber PHP behandelt es als dasselbe Konzept.
Tatsächlich sind Abschlüsse und anonyme Funktionen als Funktionen getarnte Objekte. Sie sind Instanzen der Closure-Klasse.
Abschlüsse sind wie Strings und Ganzzahlen erstklassige Werttypen.
Abschluss erstellen
<?php $clousre = function ($name) { return 'Hello ' . $name; }; echo $closure('nesfo');
Der Grund, warum wir die Variable $closure aufrufen können, liegt darin, dass der Wert dieser Variablen ist ein Abschluss, und das Abschlussobjekt implementiert die magische Methode __invoke(). Solange nach dem Variablennamen () steht, findet PHP die Methode __invoke() und ruft sie auf. PHP-Abschlüsse werden normalerweise als Rückrufe von Funktionen verwendet. Die Methoden array_map() und preg_replace_callback() verwenden alle Callback-Funktionen. Dies ist der beste Zeitpunkt, um Abschlüsse zu verwenden!
Zum Beispiel:
<?php $numbersPlusOne = array_map(function ($number) { return $number + 1; }, [1, 2, 3]); print_r($numbersPlusOne);
Erhalten Sie das Ergebnis:
[2, 3, 4]
Vor Schließungen konnten Sie benannte Funktionen nur einzeln erstellen und diese Funktion dann namentlich referenzieren. Dadurch wird die Codeausführung etwas langsamer und die Implementierung des Rückrufs wird vom Nutzungsszenario isoliert.
<?php function incrementNum ($number) { return $number + 1; } $numbersPlusOne = array_map('incrementNum', [1, 2, 3]); print_r($numbersPlusOne);
Status anhängen
Anonyme Funktionen können nicht nur als Rückrufe verwendet, sondern auch angehängt und gekapselt werden Status für PHP.
In PHP müssen Sie die bindTo()-Methode des Abschlussobjekts manuell aufrufen oder das Schlüsselwort use verwenden, um den Status an den PHP-Abschluss anzuhängen.
<?php function enclosePerson ($name) { return function ($doCommand) use ($name) { return $name . ', ' . $doCommand; } } $clay = enclosePerson('Clay'); echo $clay('get me sweet tea!');
Erhalten Sie das Ergebnis:
„Clay, hol mir süßen Tee!“
PHP-Abschlüsse sind Objekte, und jede Abschlussinstanz kann das Schlüsselwort $this verwenden, um den internen Status des Abschlusses abzurufen. Der Standardstatus des Abschlussobjekts ist nutzlos, nur die __invoke()-Methode und die bindTo-Methode.
Wir können die bindTo()-Methode verwenden, um den internen Status des Closure-Objekts an andere Objekte zu binden.
Der zweite Parameter der bindTo()-Methode: Ihre Funktion besteht darin, die PHP-Klasse anzugeben, zu der das Objekt des Bindungsabschlusses gehört. Daher kann ein Abschluss auf geschützte und private Mitglieder des Objekts zugreifen, an das der Abschluss gebunden ist.
PHP-Frameworks verwenden häufig die bindTo()-Methode, um Routing-URLs anonymen Rückruffunktionen zuzuordnen. Auf diese Weise können Sie das Schlüsselwort $this verwenden, um in dieser anonymen Funktion auf wichtige Anwendungsobjekte zu verweisen.
Verwenden Sie die bindTo()-Methode, um den Abschlussstatus anzuhängen
<?php class App { protected $routes = []; protected $responseStatus = '200 OK'; protected $responseContentType = 'text/html'; protected $responseBody = 'Hello world'; public function addRoute($routePath, $routeCallback){ $this->routes[$routePath] = $routeCallback->bindTo($this, __CLASS__); } public function dispatch($currentPath){ foreach($this->routes as $routePath => $callback){ if ($routePath === $currentPath) { $callback(); } } header('HTTP/1.1' . $this->responseStatus); header('Content-type: ' . $this->responseContentType); header('Content-length' . mb_strlen($this->responseBody)); echo $this->responseBody; } } <br>
<?php $app = new App(); $app->addRoute('/user/nesfo', function () { $this->responseContentType = 'application/json; charset=utf8'; $this->responseBody = '{"name": "nesfo"}'; }); $app->dispatch('/user/nesfo');
Das war’s Habe die Informationen zu PHP-Schließungsinformationen zusammengestellt und werde in Zukunft weiterhin relevante Informationen hinzufügen. Vielen Dank für Ihre Unterstützung dieser Website!
Weitere Artikel zu PHP-Abschlussdetails und Beispielcodes 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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Alipay PHP ...

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

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.

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.
