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 關注
- 461 瀏覽
添加回答
舉報
0/150
提交
取消