Heim > PHP-Framework > Denken Sie an PHP > Verwendung von Middleware zur Bearbeitung von Anfragen in ThinkPHP6

Verwendung von Middleware zur Bearbeitung von Anfragen in ThinkPHP6

王林
Freigeben: 2023-06-20 18:39:42
Original
1551 Leute haben es durchsucht

【Einführung】

ThinkPHP6 ist ein bekanntes PHP-Open-Source-Framework. Es übernimmt elegant die hervorragenden Funktionen der Vorgängerversion und integriert die neuen Funktionen von PHP7, wodurch es schneller und sicherer wird. In ThinkPHP6 ist Middleware ein sehr wichtiger Bestandteil, der es Entwicklern ermöglicht, vor, während und nach der Anforderung zu verarbeiten, um flexiblere und skalierbarere Anwendungen zu erreichen.

【Text】

1. Was ist Middleware?

Middleware bezieht sich auf Code, der ausgeführt werden kann, bevor und nachdem eine Anfrage Ihre Anwendung erreicht. Durch die Existenz von Middleware können Anwendungen einfach erweitert und verwaltet werden.

In ThinkPHP6 kann Middleware die folgenden Funktionen implementieren:

  1. Routenvorverarbeitung, z. B.: Überprüfung von Token, Abfangen illegaler Anforderungen usw.
  2. Vorverarbeitung von Controller-Methoden, z. B.: Zählen von PV, UV; Anforderungsparameter Verarbeitung usw.
  3. Nachbearbeitung der Controller-Methode, z. B. Zwischenspeichern von Antwortdaten, Protokollierung usw.
  4. Routing-Nachbearbeitung, z. B. Antwortprobleme usw.

2. Verwendung von Middleware

Verwendung der Middleware von ThinkPHP6 ist sehr einfach, es muss lediglich die Middleware-Konfiguration in der Konfigurationsdatei durchgeführt werden, die in der angegebenen Reihenfolge ausgeführt werden kann.

2.1 Registrierung der Middleware

In der Datei config/middleware.php können Sie die folgende Standard-Middleware-Liste sehen:

<?php

return [
    // 别名或分组
    'alias'    => [],
    // 优先级设置,此数组中的中间件会按照优先级进行先后排序
    'priority' => [],
    // 中间件列表
    'middleware' => [
            hinkmiddlewareSessionInit::class,
            hinkmiddlewareAllowCrossDomain::class,
    ],
];
Nach dem Login kopieren

Unter diesen ist die erste Middleware die SessionInit-Middleware, deren Zweck darin besteht, die Sitzung zu initialisieren, und die zweite Bei der Middleware handelt es sich um die AllowCrossDomain-Middleware, die domänenübergreifende Anforderungen ermöglichen soll. Wenn Sie Ihre eigene Middleware konfigurieren müssen, können Sie Ihre eigene Middleware-Klasse definieren und diese zur obigen Konfiguration hinzufügen.

2.2 Sortieren der Middleware

Middleware in ThinkPHP6 kann nach Priorität sortiert werden. Je kleiner der Prioritätswert, desto höher die Ausführungsreihenfolge. In der Konfigurationsdatei der Middleware können Sie die Priorität der Middleware für die angegebene Gruppe oder den angegebenen Alias ​​festlegen, wie unten gezeigt:

<?php

return [
    // 别名或分组
    'alias'    => [
        'home' => ppmiddlewareCheck::class,
    ],
    // 优先级设置,此数组中的中间件会按照优先级进行先后排序
    'priority' => [
        ppmiddlewareDemo::class => 1,
        ppmiddlewareTest::class => 2,
    ],
    // 中间件列表
    'middleware' => [
            hinkmiddlewareSessionInit::class,
            hinkmiddlewareAllowCrossDomain::class,
    ],
];
Nach dem Login kopieren

In der obigen Konfiguration stellen Sie die Demo-Middleware auf Priorität 1 und die Test-Middleware auf die Priorität 2 ein .

2.3 Verwendung von Middleware

In ThinkPHP6 kann Middleware für globales Routing oder Gruppenrouting oder für bestimmte Controller oder Controller-Methoden verwendet werden.

(1) Globales Routing verwendet Middleware

In der Datei route/route.php im Anwendungsverzeichnis können Sie globales Routing wie folgt registrieren:

<?php

use thinkacadeRoute;

Route::get('hello/:name','index/hello')->middleware('Check');
Nach dem Login kopieren

Fügen Sie es im obigen Code über Middleware hinzu ('Check') A Es wird eine Middleware mit dem Namen Check erstellt, was bedeutet, dass die Check-Middleware ausgeführt wird, bevor die Methode index/hello ausgeführt wird.

(2) Gruppenrouting verwendet Middleware

In der Datei route/group.php im Anwendungsverzeichnis können Sie Gruppenrouting registrieren, wie unten gezeigt:

<?php

use thinkacadeRoute;

//定义分组路由
Route::group('/api', function () {
    Route::get('/user/:id', 'api/user/read')->middleware('Check');
});
Nach dem Login kopieren

Im obigen Code ist eine Gruppe mit dem Namen API definiert Routing, wobei die Route /user/:id eine Middleware namens Check verwendet.

(3) Verwenden von Middleware auf Controller-Ebene

In der Controller-Datei können Sie Middleware auf Methodenebene über speziell benannte Methoden definieren, wie unten gezeigt:

<?php
namespace appcontroller;

class Test
{
    // 方法级别
    public function read() 
    {
        return "Hello Word!";
    }

    // 方法级别
    public function write()
    {
        return "Hello China!";
    }

    // 控制器级别
    protected $middleware = [ppmiddlewareCheck::class];

    // 方法级别
    protected $middleware = [
        'read' => [ppmiddlewareReadCheck::class],
        'write' => [ppmiddlewareWriteCheck::class],
    ];
}
Nach dem Login kopieren

Im obigen Code verwenden die Lese- und Schreibmethoden die Methode -Level-Middleware ist eine Middleware auf Methodenebene, und die Check-Middleware ist eine Middleware auf Controller-Ebene.

【Zusammenfassung】

Middleware ist ein leistungsstarkes Tool, das eine sehr flexible Methode zur Anfrageverarbeitung bietet und es uns ermöglicht, Daten vor, während und nach der Anfrage zu verarbeiten. In ThinkPHP6 ist die Verwendung von Middleware sehr einfach. Sie müssen lediglich Middleware-Klassen nach bestimmten Regeln schreiben und diese konfigurieren.

Das obige ist der detaillierte Inhalt vonVerwendung von Middleware zur Bearbeitung von Anfragen in ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage