国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

使用中間件和增強(qiáng)\Webman\Config來(lái)區(qū)分不同業(yè)務(wù)模塊端

wzj177

場(chǎng)景需求描述

有些時(shí)候,我們需要區(qū)分當(dāng)前請(qǐng)求的接口屬于哪個(gè)業(yè)務(wù)端入口.比如:假設(shè)有admin、api(vip)兩個(gè)業(yè)務(wù)端,然后我們有個(gè)統(tǒng)一的業(yè)務(wù)日志表,在記錄業(yè)務(wù)日志時(shí),我們需要記錄當(dāng)前的業(yè)務(wù)端,這個(gè)時(shí)候我們需要在service中通過(guò)一個(gè)方法獲取當(dāng)前業(yè)務(wù)端標(biāo)識(shí)

傳統(tǒng)web框架處理方式

yii2

 在yii2中,通過(guò)在模塊的config配置id來(lái)標(biāo)識(shí)不同業(yè)務(wù)端模塊,然后通過(guò)`Yii::$app->id`來(lái)獲取標(biāo)識(shí)

laravel 、tp

 這兩個(gè)框架應(yīng)該也有和yii2類(lèi)似的操作;當(dāng)然還有一種方式:使用中間件來(lái)處理,在對(duì)應(yīng)端增加一個(gè)中間件,然后在中間件里注入:`config(['auth.defaults.guard' => 'admin']);` 這樣的操作,然后在業(yè)務(wù)中通過(guò)config獲取標(biāo)識(shí)

webman 處理方式

webman里,我們也可以采用上面的方式,增加全局的middleware配置

  ...
      'admin' => [
        \app\middleware\admin\AppIDMiddleware::class
    ],
    'api' => [
        \app\middleware\api\AppIDMiddleware::class
    ]
  • AppIDMiddleware

    class AppIDMiddleware implements MiddlewareInterface
    {
    
    public function process(Request $request, callable $handler): Response
    {
        Config::set('app.id', 'admin');
    
        return $handler($request);
    }
    }

    增強(qiáng)\Webman\Config,為其增加Set方法.通過(guò)繼承的方式來(lái)實(shí)現(xiàn)

    class Config extends \Webman\Config
    {
    /**
     * @param string $key
     * @param $value
     * @return void
     */
    public static function set(string $key, $value)
    {
        $keyArray = explode('.', $key);
        $current = &static::$config;
        foreach ($keyArray as $index => $subKey) {
            // 如果是最后一個(gè)鍵,直接設(shè)置值并返回
            if ($index === count($keyArray) - 1) {
                $current[$subKey] = $value;
                return;
            }
    
            // 如果子鍵存在,則移動(dòng)到下一級(jí)
            if (isset($current[$subKey])) {
                $current = &$current[$subKey];
            } else {
                // 如果子鍵不存在,則創(chuàng)建一個(gè)空數(shù)組或關(guān)聯(lián)數(shù)組
                $current[$subKey] = [];
                $current = &$current[$subKey];
            }
        }
    //        $level = count($keyArray);
    //        if ($level == 1) {
    //            if (isset(static::$config[$key])) {
    //                static::$config[$key] = $value;
    //            }
    //            return;
    //        }
    //
    //        if ($level === 2) {
    //            if (isset(static::$config[$keyArray[0]][$keyArray[1]])) {
    //                static::$config[$keyArray[0]][$keyArray[1]] = $value;
    //            }
    //            return;
    //        }
    //
    //
    //        if ($level === 3) {
    //            if (isset(static::$config[$keyArray[0]][$keyArray[1]][$keyArray[12]])) {
    //                static::$config[$keyArray[0]][$keyArray[1]][$keyArray[2]] = $value;
    //            }
    //        }
    }
    }

    業(yè)務(wù)調(diào)用

    截圖

1034 0 0
0個(gè)評(píng)論

wzj177

586
積分
0
獲贊數(shù)
0
粉絲數(shù)
2019-06-03 加入
??