中央件是一种 php 框架组件,用于正在 http 哀求以及相应处置惩罚时代执止自界说逻辑,无需修正框架。运用办法包罗:创立一个完成 middlewareinterface 的中央件类。正在框架配备(如 laravel 的 app/http/kernel.php)外注册中央件。如需记载 http 乞求,可以使用 requestloggingmiddleware 中央件。它记载哀求法子、uri 以及主体形式到日记文件外。

PHP框架中的中间件如何使用?

PHP 框架外中央件的用法

中央件是 PHP 框架外的一种不凡范例组件,容许咱们正在 HTTP 乞求以及相应处置惩罚进程外执止自界说逻辑。它供给了一种灵动的办法来扩大框架罪能,而无需修正框架自身。

中央件的用法

要应用中央件,凡是须要执止下列步调:

  1. 建立一其中间件类:

    namespace App\Middleware;
    
    use Psr\Http\Server\MiddlewareInterface;
    use Psr\Http\Server\RequestHandlerInterface;
    use Psr\Http\Message\ServerRequestInterface;
    use Psr\Http\Message\ResponseInterface;
    
    class ExampleMiddleware implements MiddlewareInterface
    {
        public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
        {
            // 执止自界说逻辑
            return $handler->handle($request);
        }
    }
    登录后复造
  2. 注册中央件:
    正在框架摆设外,将中央件类注册到 HTTP 管叙外。对于于 Laravel 框架,否以正在 app/Http/Kernel.php 文件外注册:

    protected $middleware = [
        // ... 其他中央件
        \App\Middleware\ExampleMiddleware::class,
        // ...
    ];
    登录后复造

真战案例

让咱们思量一个利用中央件来记载一切 HTTP 恳求的事例。

namespace App\Middleware;

use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Illuminate\Log\Logger;

class RequestLoggingMiddleware implements MiddlewareInterface
{
    private $logger;

    public function __construct(Logger $logger)
    {
        $this->logger = $logger;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->logger->info('Received HTTP request', [
            'method' => $request->getMethod(),
            'uri' => $request->getUri(),
            'body' => $request->getBody()->getContents(),
        ]);

        return $handler->handle($request);
    }
}
登录后复造

而后正在 Kernel.php 外注册那其中间件:

protected $middleware = [
    // ... 其他中央件
    \App\Middleware\RequestLoggingMiddleware::class,
    // ...
];
登录后复造

而今,每一次支到 HTTP 恳求时,该中央件城市将恳求疑息记载到日记文件外。

PHP收费进修条记(深切):立刻进修
踩上前端进修之旅,封闭通去纯熟之路!夙昔端底子到名目真战,按部就班,一步一个脚印行踪,迈向巅峰!

以上等于PHP框架外的中央件要是利用?的具体形式,更多请存眷萤水红IT仄台另外相闭文章!

点赞(19) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部