$request对象特定数组的设置与更新方法

gongaiorg

可以直接在support\Request类里直接添加set方法,框架升级不会被覆盖

/**
 * 设置$request数据,自动覆盖更新
 * @param array $data
 */
function set(  array $data )
{
    $key = key($data);// 获取数组的键名
    $rawData = $this->$key ?: [];// 获取原数据
    $data = array_merge($rawData, $data[$key]);// 合并新数据
    $this->$key = $data; // 设置新数据
}

使用方法:

在需要设置更新数据的地方直接 $request->set($data);即可

这样做的好处是可以更新已有的值

366 5 4
5个评论

dj880

非常感谢,正好需要~

  • 暂无评论
liziyu

👍

  • 暂无评论
初心by

建议写一下怎么调用,不然还得研究一下

<?php

namespace app\middleware;

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

/**
 * 处理请求数据
 */
class Prdata implements MiddlewareInterface
{

    public function process(Request $request, callable $handler): Response
    {
        $getData = $request->get();
        // 处理get数据
        if (!empty($getData)) {
            foreach ($getData as $key => $value) {
                is_string($value) && $getData[$key] = trim($value);
            }
            // 设置get数据
            request()->set([
                '_data' => [
                    'get' => $getData
                ]
            ]);
        }
        // 请求继续向洋葱芯穿越
        $response = $handler($request);
        return $response;
    }
}
  • 暂无评论

中间件中,我直接这样也行啊

public function process(Request $request, callable $next): Response
{
    $request->Webman = 'study'; //这样用
    return $next($request);
}
  • 27天前

    在控制器中用 $request->Webman ; 这种方式接收

截图

截图

截图

  • 初心by 27天前

    你用 request()->get() 这个获取一下

  • 初心by 27天前

    可能我们的应用场景不一样吧.. 我想要的是 修改 get() post() 得到的数据,不是直接去获取对应字段

  • 27天前

    这不是http传参啊,get / post当然获不到了

  • 初心by 27天前

    那之前本来就可以直接赋值啊,用set函数的意义,我觉得应该就是可以修改 get、post 获取的值

gongaiorg

-80
积分
0
获赞数
0
粉丝数
2022-03-18 加入
×
🔝