walkor / webman-framework

webman-framework
116 stars 57 forks source link

middleware 配置增强 #71

Closed krissss closed 1 year ago

krissss commented 1 year ago

提供 middleware 的多种注入形式

使用举例:

middleware

<?php
namespace app\middleware;

use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

class Test implements MiddlewareInterface
{
    protected string $name = 'default';

    public function __construct($name = null)
    {
        if ($name) {
            $this->name = $name;
        }
    }

    public function process(Request $request, callable $next) : Response
    {
        var_dump($this->name);
        return $next($request);
    }

}

route

Route::get('/a', fn() => 'Hello A')->middleware(\app\middleware\Test::class); // dump default
Route::get('/b', fn() => 'Hello B')->middleware(new \app\middleware\Test('B')); // dump B
Route::get('/c', fn() => 'Hello C')->middleware(fn() => new \app\middleware\Test('C')); // dump C
krissss commented 1 year ago

针对 #58 可以使用如下形式:

\Webman\Route::post('/demo', [\app\controller\DemoController::class, 'index'])
    ->middleware([
        new \app\middleware\ThrottlerMiddleware(60, 2),
        new \app\middleware\AuthMiddleware('admin'),
    ]);
walkor commented 1 year ago

大赞 👍