Heim  >  Artikel  >  PHP-Framework  >  Was sind die Unterschiede zwischen der Front-End-Middleware und der Back-End-Middleware von ThinkPHP6?

Was sind die Unterschiede zwischen der Front-End-Middleware und der Back-End-Middleware von ThinkPHP6?

王雪芹
王雪芹Original
2020-05-06 16:12:583425Durchsuche

Im letzten Beispiel haben wir gelernt, Middleware zu definieren und die Bedeutung von Middleware verstanden. Dann haben wir das Handbuch durchgeblättert und ein anderes mit den Namen „Pre-Middleware“ und „Post-Middleware“ gefunden. Was ist der Unterschied zwischen den beiden?

1. Der Unterschied in den Definitionen.

Es ist nicht schwer, dem offiziellen Website-Handbuch zu entnehmen, dass die Definitionen von Pre-Middleware und Post-Middleware unterschiedlich sind. Schauen wir uns das unten an.

Pre-Middleware-Definition:

<?php
namespace app\middleware;
class Before
{
    public function handle($request, \Closure $next)
    {
        // 添加中间件执行代码
        return $next($request);
    }
}

Post-Middleware:

<?php
namespace app\middleware;
class After
{
    public function handle($request, \Closure $next)
    {
        $response = $next($request);
        // 添加中间件执行代码
        return $response;
    }
}

Nach näherer Betrachtung stellte ich fest, dass es sich bei der letzten Analyse um Ausführungscode und $next handelt . ($request) Reihenfolgeproblem, diese Reihenfolge ist der Schlüssel zur Prä-Middleware und Post-Middleware.

2. $request ist anders.

Wir können den folgenden Code in der Pre-Middleware bzw. Post-Middleware drucken:

halt($request);

Wir haben sorgfältig verglichen und festgestellt, dass die Controller und Methoden in der Pre-Middleware Middleware ist leer, die Post-Middleware kann den Namen und die Methode des Controllers abrufen. Wenn wir also den Controller und die Methode erhalten möchten, auf die aktuell zugegriffen wird, müssen wir zur Lösung Post-Middleware verwenden.

Was sind die Unterschiede zwischen der Front-End-Middleware und der Back-End-Middleware von ThinkPHP6?Was sind die Unterschiede zwischen der Front-End-Middleware und der Back-End-Middleware von ThinkPHP6?

3. Middleware fängt Anmeldeszenario ab.

Werfen wir zunächst einen Blick auf die Definition von Middleware auf der offiziellen Website:

Middleware wird hauptsächlich dazu verwendet, HTTP-Anfragen von Anwendungen abzufangen oder zu filtern und auszuführen notwendigen Geschäftsabschluss.

Wenn Sie sich die Definition der offiziellen Website ansehen, denken Sie vielleicht, dass die Verwendung von Middleware zum Abfangen von Anmeldungen wirklich das Beste ist. Aber sollten wir Pre- oder Post-Middleware verwenden?

<?php
namespace app\middleware;
class After
{
    public function handle($request, \Closure $next)
    {
        $response = $next($request);
        // 添加中间件执行代码
        if(empty(&#39;session&#39;)){
            echo &#39;登录不合法&#39;;
            //跳转到登录页面
        }
        return $response;
    }
}

Backend-Homepage:

public function index(){
    echo &#39;后台首页&#39;;
}

Das Ausführungsergebnis stellt fest, dass wir die Indexmethode vor dem Anmeldesprung noch ausführen und den Inhalt ausgeben können.

Daher kann die Post-Middleware nicht in Anmeldeszenarien verwendet werden. Zu diesem Zeitpunkt muss auch festgestellt werden, ob es sich um eine Anmeldung handelt , viele Probleme werden umgeleitet, daher müssen Freunde gut damit umgehen.

Das Obige ist die relevante Einführung in Pre- und Post-Middleware. In tatsächlichen Projekten bestimmen wir basierend auf unserer tatsächlichen Geschäftslogik, ob Pre- oder Post-Middleware verwendet werden soll.

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen der Front-End-Middleware und der Back-End-Middleware von ThinkPHP6?. 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