2017-10-18 89 views
1

將參數作爲數組或參數傳遞給方法是更好嗎? 我覺得一個數組會讓這個方法變得更加靈活,當然這也可以通過繼承來完成,但是會使數據傳遞更加不透明,因爲變量在處理某些類型方法,但對用戶的方法更清楚?將方法參數作爲變量或數組傳遞

哪個更好,我的假設是否正確?

實例

public function addToCart($sku, $itemPrice, $itemCost, $itemName, $itemColor ....) {} 

public function addToCart($itemArray, $userArray) {} 
+1

如何在使用數組時對數值的類型和有效性做出保證? – PeeHaa

+0

乍一看,它看起來像你需要的對象:'Item'和'User'而不是兩個數組。說,我寧願更靈活的第二種方法 – DonCallisto

+0

你可能更好[依賴注入](http://php-di.org/doc/understanding-di.html) - 所以你會通過一個特定類型的對象而不是數組,例如'addToCart(MyProduct $ product){...}' - 這樣您就可以以定義的格式準確獲取所需的數據。 – CD001

回答

5

的方法的整個點是使作爲描述性和混凝土越好。如果你僅僅傳遞一個數組,你無法控制發送給函數的內容以及函數需要什麼工作。這很快導致錯誤和錯誤。

如果您發現自己處於一種方法變得太大的情況,那麼您最有可能構建的功能太多了。一個功能應該做一個的事情。學習將它們分開並調用其他函數。

最後,您應該適應OOP並傳遞對象,而不是一堆沒有以有意義的方式連接的單獨變量。取而代之的是:

public function addToCart($sku, $itemPrice, $itemCost, $itemName, $itemColor ....) {} 

你應該做這樣的事情:

public function addToCart(Item $item) {} 

學習如何構建更大的項目,課程和系統是一項艱鉅的任務,它需要一段時間才能得到它的權利。即使是經驗豐富的建築師和程序員也會不時地構建可怕的類和方法。重構是關鍵。花時間找出解決問題的最佳角度,而不是像數組傳遞或無休止的參數那樣的快捷方式。

+1

假設'$ item'是一個產品,這是一個相當安全的賭注,'$ sku'將是一個屬性... – CD001

+0

@ CD001你說得對。爲了簡單起見,我刪除了它。 – OptimusCrime

+0

快速問題這是PHP你可以在你使用的上下文中使用靜態類型? (Item $ item) –