国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于全局與應(yīng)用插件中間件的問題

uk8u8

問題描述

請(qǐng)問應(yīng)用插件(plugin)的正常執(zhí)行流程里會(huì)執(zhí)行全局中間件么?

我的測(cè)試:

  1. 全新安裝webman/admin并登錄后臺(tái)
  2. 安裝redis-queue管理應(yīng)用插件
  3. 新建中間件app/middleware/Test.php

    class Test implements MiddlewareInterface
    {
    public function process(Request $request, callable $handler) : Response
    {
        echo $request->url() . PHP_EOL;
        echo 'TestMiddleware' . PHP_EOL;
    
        $response = $handler($request);
    
        return $response;
    }
    }
  4. 修改config/middleware.php配置文件
    return [
    '' => [
        app\middleware\Test::class,
    ]
    ];
  5. 啟動(dòng)應(yīng)用
    php start.php start

測(cè)試結(jié)果

  1. 訪問app/admin應(yīng)用不會(huì)執(zhí)行全局中間件。
  2. 訪問后臺(tái)的app/queue應(yīng)用下的控制器,有一定的機(jī)率會(huì)執(zhí)行全局中間件。

這個(gè)結(jié)果讓我有點(diǎn)懵。目前問題我也無法針對(duì)性的復(fù)現(xiàn),開發(fā)過程中,訪問后臺(tái)app/queue下的控制器時(shí)不時(shí)的會(huì)執(zhí)行全局中間件。我看app/queue下的路由配置里,有個(gè)閉包路由:

Route::any('/app/queue', function () {
    return response()->withFile(base_path() . '/plugin/queue/public/index.html');
});

看請(qǐng)求url//127.0.0.1:8787/app/queue及請(qǐng)求控制器名稱為空,貌似是這個(gè)閉包路由執(zhí)行了全局中間件?但時(shí)有時(shí)無。。
求解惑,謝謝!

1214 1 1
1個(gè)回答

walkor 打賞

除了路由配置是全局的,其它配置插件與插件之間以及插件與主配置之間不互相影響的,包括中間件。
目前判斷一個(gè)請(qǐng)求是否屬于某個(gè)插件,不是通過url來判斷的,而是通過實(shí)際調(diào)用的控制器是否以\plugin\xxx開頭來判斷的(這里下個(gè)版本可能會(huì)優(yōu)化)。
目前的機(jī)制由于閉包函數(shù)不是控制器,所以不屬于任何插件,所以會(huì)調(diào)用主項(xiàng)目全局中間件。

這里后期可能會(huì)優(yōu)化為:如果路由設(shè)置的是閉包,那么將通過url來判斷是否屬于某個(gè)插件的請(qǐng)求,就不會(huì)有這個(gè)疑問了。

  • uk8u8 2022-12-12

    感謝。明白了。期待發(fā)版!

  • walkor 2022-12-12

    發(fā)了一個(gè)小版本,composer require workerman/webman-framework ^v1.4.10 試下
    當(dāng)路由設(shè)置的是一個(gè)函數(shù)或者閉包是,插件名通過url來獲取

  • uk8u8 2022-12-12

    親測(cè)正常!太迅速了。。^_^

年代過于久遠(yuǎn),無法發(fā)表回答
??