简化一个函数 php

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;
        }
    }
}

写了一个权限的函数,能不能简化一下,请指点。

HUWWW
浏览 430回答 3
3回答

白猪掌柜的

最近迷上了不用分支语句写代码,小小试一下。 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]; } 平时代码里面习惯了用完全相等来判断,这样可以省空值的类型变化引起的问题。增加了函数参数类型和返回值类型的声明。

杨__羊羊

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

动漫人物

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; } }
打开App,查看更多内容
随时随地看视频慕课网APP