2011-08-09 43 views
1

我有一個帶有屬性(比如product_id)的類(比如Product),並且具有從給定產品ID的多個數據庫表中檢索信息的方法。現在我想讓類方法處理一個產品ID以及一系列產品ID(爲了節省查詢次數)。此外,輸出將根據輸入而變化,即對於數組作爲輸入,我將輸出一個數組索引與產品id,而對於單個ID,我可能不需要這個數組。帶有屬性的PHP類,可以是int或者數組

什麼是設計這樣一個班級的乾淨方式?

這裏有一對夫婦的事情我已經想到了:

  1. 有單個和多個ID指示名(乾淨的,但重複)

  2. 有兩種方法只有一個單獨的方法輸入類型,檢查輸入類型...處理...根據輸入的格式輸出(不是很乾淨)

回答

1

在內部,總是使用一組值。如果數組中只有一個值,那就這樣做,但這根本不需要改變你的邏輯。

輸入/輸出,你可能想使你的方法接受一個單一的價值,這你要變成一個數組:

public function foo($val) { 
    $val = (array)$val; 

    ... 
} 

和/或,您可以創建一個「奇異便利包裝「,只是表明它返回或接受單一結果:

public function foos(array $vals) { 
    ... 

    return /* array of elements */; 
} 

public function foo($val) { 
    return current($this->foos(array($val))); 
} 
+0

您認爲從客戶端代碼的角度來看,正確的方法是什麼?具有相同的函數接受多種類型的參數(數組,int等)並返回根據輸入OR格式化的輸出,每個輸入類型具有不同的函數。如果我將這些代碼用作API,我應該使用哪一個? – Vikk

+0

@Vik只要它是一致的和可預測的,它們都很好。如果你的函數接受一個參數並返回一個參數,並且接受一個數組並且返回一個數組,那麼我認爲沒問題。如果輸出不可預測,例如因爲該函數沒有參數並且可能返回單個元素或元素數組,則應該使用單獨的方法。根據您的具體情況,可能會有更多的考慮因素,這只是一個經驗法則。 – deceze

相關問題