为了账号安全,请及时绑定邮箱和手机立即绑定

简化一个函数 php

简化一个函数 php

PHP
HUWWW 2019-03-08 12:26:11
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];
}

平时代码里面习惯了用完全相等来判断,这样可以省空值的类型变化引起的问题。增加了函数参数类型和返回值类型的声明。

查看完整回答
反对 回复 2019-03-18
?
杨__羊羊

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这种,阅读代码的人根本不清楚是什么意思。

查看完整回答
反对 回复 2019-03-18
?
动漫人物

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;
        }
    }
查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 429 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信