function has_permission($uid,$type)
{
if($type==1){
if($uid==Session::get('user_id') || Session::get('group_id')==1 || Session::get('group_id')==2){
return true;
}else{
return false;
}
}
if($type==2){
if(Session::get('group_id')==1 || Session::get('group_id')==2){
return true;
}else{
return false;
}
}
if($type==3){
if(Session::get('group_id')==1){
return true;
}else{
return false;
}
}
}
写了一个权限的函数,能不能简化一下,请指点。
3 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
最近迷上了不用分支语句写代码,小小试一下。
function hasPermission(int $currentUid, int $type = 0): bool
{
$uid = (int)Session::get('user_id');
$gid = (int)Session::get('group_id');
$permissions = [
false,
$currentUid === $uid || $gid === 1 || $gid === 2,
$gid === 1 || $gid === 2,
$gid === 1
];
return isset($permissions[$type]) && $permissions[$type];
}
平时代码里面习惯了用完全相等来判断,这样可以省空值的类型变化引起的问题。增加了函数参数类型和返回值类型的声明。
杨__羊羊
TA贡献1943条经验 获得超7个赞
function hasPermission($uid, $type)
{
$functionName = 'hasType'.$type.'Permission';
return call_user_func($functionName, $uid);
}
function hasType1Permission($uid)
{
$sessionUid = Session::get('user_id');
$sessionGid = Session::get('group_id');
return $uid == $sessionUid || $sessionGid == 1 || $sessionGid == 2;
}
function hasType2Permission($uid)
{
$sessionGid = Session::get('group_id');
return $sessionGid == 1 || $sessionGid == 2;
}
function hasType3Permission($uid)
{
$sessionGid = Session::get('group_id');
return $sessionGid == 1;
}
代码中最好不要使用1、2这种,阅读代码的人根本不清楚是什么意思。
动漫人物
TA贡献1815条经验 获得超10个赞
function has_permission($uid, $type)
{
switch ($type) {
case 1:
return $uid == Session::get('user_id') || in_array(Session::get('group_id'),[1,2]);
case 2:
return in_array(Session::get('group_id'),[1,2]);
case 3 :
return Session::get('group_id') == 1;
default:
return false;
}
}
- 3 回答
- 0 关注
- 429 浏览
添加回答
举报
0/150
提交
取消