亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

簡化一個函數 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 關注
  • 461 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號