有些時(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í)
在yii2中,通過(guò)在模塊的config配置id來(lái)標(biāo)識(shí)不同業(yè)務(wù)端模塊,然后通過(guò)`Yii::$app->id`來(lái)獲取標(biāo)識(shí)
這兩個(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í)
...
'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);
}
}
\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;
// }
// }
}
}