2011-06-06 105 views
3

我是OOP的新手,想知道什麼是正確的OOP方式來做到這一點。我的班級有一個方法getValue,它傳遞了一個輸​​入(一個鍵),它用來搜索一個數組並返回一個值。在哪裏存儲我的OOP類需要的大常量

事情是陣列接近200個條目巨大,真的打亂了方法的可讀性,所以我傾向於從這個類中刪除它,但不知道該把它放在哪裏。我應該爲它創建一個單獨的類,還是將它放在常量類Constants::getValue()或任何其他建議中?將它從這個類中移除會是錯誤的,因爲它應該包含在需要它的對象中?

public function getValue($input) { 
    switch ($input) { 
     case 'in1' : { $value = array('wsj', 'kwo'); break; } 
     case 'in2' : { $value = array('wpo', 'ki2'); break; } 
     ..... 
     default:  { $value = array('wap', 'k90'); break; } 
    } 
    return $value; 
} 
+1

這有點抽象。你能說出這個班是做什麼的,以及常用的是什麼? (是否有可能將它轉換爲嵌套的$ input-> value數組而不是使用'switch',那麼您可以將它作爲一個屬性。) – mario 2011-06-06 04:07:27

回答

1

如果有200個案件,每一個由來自幾個常數構成一小陣的,那麼我會認真考慮所有的數據移動到一個文件中,並用少量的替代它讀取文件並將所有內容存儲在地圖/查找表中的代碼,然後從代碼中檢索正確的響應。保持這種方式肯定會更容易,代碼會更容易理解。

2

,您可以創建在另一個PHP文件一鍵=>值數組,它包含在你的類

content_array.php:

$ARRAY = array(
       'in1' => array('wsj','kwo'), 
       'in2' => array('wpo','ki2'), 
       ... 
       'default' => array('wap','k90') 
      ); 

那麼你的函數可能看起來像這樣這些值:

public function getValue($input){ 
    include_once('content_array.php'); 
    if(array_key_exists($input, $ARRAY)){ 
     $value = $ARRAY[$input]; 
    } else { 
     $value = $ARRAY['default']; 
    } 
    return $value; 
} 

如果你不喜歡這種方法,你可以把你所有的信息在一個JSON文件,然後使用json_decode讀取該文件到一個數組()