middleware-dispatcher icon indicating copy to clipboard operation
middleware-dispatcher copied to clipboard

Middleware attribute

Open xepozz opened this issue 4 months ago • 3 comments

Q A
Is bugfix?
New feature? ✔️
Breaks BC?

It allows users to use middlewares like the following:

<?php

declare(strict_types=1);

namespace Yiisoft\Middleware\Dispatcher\Tests\Support;

use Nyholm\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Yiisoft\Middleware\Dispatcher\Attribute\Middleware;

final class TestController
{
    public function index(): ResponseInterface
    {
        return new Response(200, ['test' => 'yii']);
    }

    #[Middleware([
        'class' => ResponseMiddleware::class,
        '__construct()' => [200],
    ])]
    public function error(): ResponseInterface
    {
        return new Response(404);
    }

    #[Middleware([
        'class' => SetHeaderMiddleware::class,
        '__construct()' => ['x-test1', 'yii1'],
    ])]
    #[Middleware([
        'class' => SetHeaderMiddleware::class,
        '__construct()' => ['x-test2', 'yii2'],
    ])]
    #[Middleware([
        'class' => SetHeaderMiddleware::class,
        '__construct()' => ['x-test3', 'yii3'],
    ])]
    public function severalMiddlewares(): ResponseInterface
    {
        return new Response(404);
    }
}

xepozz avatar Feb 17 '24 19:02 xepozz