2011-09-20 50 views
0

我目前正在使用一個類來控制對我站點中某些文件的訪問。該課程正常工作。不過,我最近被告知我需要爲網站的某個特定部分創建一個更加精細的系統。我的第一個傾向是使用嵌套if-else-if來設置幾個變量。訪問方法和類時使用php流量控制

$admin = new Admin(); 

if($admin->user_access('can_view_g2')) { 
    $groupNum = $group2; 
    $adminGroup = true; 
    } else { 

if($admin->user_access('can_view_g3')) { 
    $groupNum = $group3; 
    $adminGroup = false; 
    } else { 

if($admin->user_access('can_view_g4')) { 
    $groupNum = $group4; 
    $adminGroup = true; 
    } else { 

. . . 

現在我想消除幾行代碼並創建一個更清晰的流控制語句。我想用switch語句來處理這個,但是我不確定這是可能的,因爲我正在訪問類的方法和屬性。

switch ($admin->user_access($permission)) { 

    case 'can_view_g2': 
     $groupNum = $group2; 
     $adminGroup = true; 

    break; 

    case 'can_view_g3': 
     $groupNum = $group3; 
     $adminGroup = true;; 

    break; 

    case 'can_view_g4': 
     $groupNum = $group4; 
     $adminGroup = true; 

    . . . 

我上面有什麼是行不通的。有誰知道一種方法來做到這一點,或至少有一個更有效的流量控制方法使用?

回答

0

如果你只是想打開的的if/else成塊開關/箱:

switch (true) { 
    case $admin->user_access('can_view_g2'): 
     $groupNum = $group2; 
     $adminGroup = true; 
    break; 

    ... 
} 
+0

我想這是更清晰,但效率明智,這是一樣的if/else語句。 –

1

試試這個:

$user_access = $admin -> user_access($permission); 
switch($user_acces) { 
... 

這是因爲「不能使用返回值....」什麼錯誤..

+0

'$ user_access'計算結果爲TRUE;或'FALSE' –

+0

啊,等等,我知道看到的差異Interstellar_Coder!那麼我的「解決方案」是不會工作的,我的道歉! – ChrisH