ericabouaf/middl

此包的最新版本(v1.0.0)没有可用的许可信息。

PHP中中间件模式的通用实现

v1.0.0 2024-08-23 13:06 UTC

This package is auto-updated.

Last update: 2024-09-23 13:21:35 UTC


README

PHP中中间件模式的通用实现

安装

composer require ericabouaf/middl

用法

中间件配置

要配置中间件,您需要创建一个继承自AbstractFlow并实现configureMiddlewares方法的类。

use YourNamespace\AbstractFlow;
use YourNamespace\Middleware\DummyMiddleware;

class SampleFlow extends AbstractFlow
{
    protected function configureMiddlewares(): array
    {
        return [
            new DummyMiddleware('example'),
            // Add other middlewares here
        ];
    }
}

创建中间件

根据需要,您可以扩展AbstractMiddlewareBeforeAfterMiddleware来创建中间件。

使用AbstractMiddleware的示例

use YourNamespace\AbstractMiddleware;
use YourNamespace\Request;
use YourNamespace\Response;

class SampleCustomMiddleware extends AbstractMiddleware
{
    public function __invoke(Request $request, callable $next): Response
    {
        // Middleware logic before calling the next middleware
        $response = $next($request);
        // Middleware logic after calling the next middleware
        return $response;
    }
}

使用BeforeAfterMiddleware的示例

use YourNamespace\Middleware\BeforeAfterMiddleware;
use YourNamespace\Request;
use YourNamespace\Response;

class SampleBeforeAfterMiddleware extends BeforeAfterMiddleware
{
    public function before(Request $request): void
    {
        // Logic before calling the next middleware
    }

    public function after(Request $request, Response $response): Response
    {
        // Logic after calling the next middleware
        return $response;
    }
}

在没有流的情况下执行中间件

要执行中间件,请使用MiddlewareRunner类的run方法。

use YourNamespace\MiddlewareRunner;
use YourNamespace\Request;
use YourNamespace\Response;
use Psr\Log\NullLogger;

$request = new Request(['param1' => 'value1']);
$middlewares = [
    new SampleCustomMiddleware(),
    new SampleBeforeAfterMiddleware(),
    // Add other middlewares here
];

$response = MiddlewareRunner::run($middlewares, $request, new NullLogger());