分享批量获取GET/POST函数 [ 技术分享 ]
YII2提供了方便的Yii::$app->request->get/post函数方便获取相应参数,并在获取失败时设置默认值。 但是在现实情况中,很多场景需要获取很多个参数,例如 $username=Yii::$app->request->get('username'); $goods_id=Yii::$app->request->get('goods_id'); $address=Yii::$app->request->get('address'); $phone=Yii::$app->request->get('phone'); ....
此时就显得代码杂乱(也可能是个人有洁癖)
于是有了以下函数
/**
* 功能:获取GET参数,支持批量获取,支持设定默认值,如未设置默认值,将用null作为默认值
*
* 键值对数组,例如['username'=>'jack','password']
* 键表示需要获取的参数名,值表示当参数不存在时使用的默认值。
* 当只传递值的时候,表示获取$_GET['值']的参数,且当参数不存在时返回null
*
* @param array $name
*
* @return array
*/
public function getQuery (array $name)
{
$result = [];
foreach ($name as $key => $val) {
if (is_numeric($key))
$result[$val] = isset($_GET[$val]) ? $_GET[$val] : null;
else
$result[$key] = isset($_GET[$key]) ? $_GET[$key] : $val;
}
return $result;
}
我将此函数写在了自己的Controller基类内,所有Controller继承它,于是以上的参数可以这样获取
$params = $this->getQuery([
'username' => '张三',//当用户名不存在,默认使用张三
'goods_id',
'address',
'phone',
]);
如果需要改成获取POST参数,把以上函数中的$_GET改成$_POST就行了
共 5 条回复
sndwow
注册时间:2016-12-02
最后登录:2019-07-03
在线时长:6小时50分
最后登录:2019-07-03
在线时长:6小时50分
- 粉丝0
- 金钱65
- 威望20
- 积分325