2012-08-10 66 views
2

在我的購物車對象,我有產品這是編輯/刪除/更新對象的集合中的其他對象

現在集合時,用戶添加或刪除的產品,我有兩個選擇的最佳方式

  1. 要麼刪除所有老產品和新產品持續
  2. 迭代新產品的收集,看看如果那是已經存在。如果不存在,則刪除該對象。如果不是還有其添加

哪個是更好的方式

回答

2

,我會採取刪除將建立一個接受ID(如型號或數據庫ID的對象的函數的方法對於產品),然後該功能貫穿其自己的項目,如果發現匹配的項目將其刪除。

至於添加新的項目,有一個函數,再次接受項目ID和武裝與該信息從數據庫獲取所有適用的數據並將其附加到它自己的集合。

想要避免刪除一個對象並重新創建它,如果你想改變它的話。嘗試使用具有所有功能的對象去完成他們自己需要做的事情。

一些示例代碼可能會意味深長豈止:

class shoppingItem 
{ 
    public $ID; 
    public $name; 
    public $price; 
} 

class shoppingCart 
{ 
    public $items=array(); 
    public $totalValue; 

    public function addItem($ID) 
    { 
     $this->items[]= new shoppingItem(); 
     // ... do database stuff to get item details 
     $this->items[]->ID=$dataBaseRow['id']; 
     $this->items[]->name=$dataBaseRow['name']; 
     $this->items[]->price=$dataBaseRow['price']; 
     $this->ammendTotal(); 
    } 

    public function ammendTotal() 
    { 
     // loop all items and get total value. 
     $var=myTotal; 
     $this->totalValue=$var; 
    } 

    public function removeItem($ID) 
    { 
     for($i=0;$i<count($this->items);$i++) 
     { 
      if($this->items[$i]->ID==$ID) 
      { 
       // remove from array or update qty 
      } 
     } 
     $this->ammendTotal(); 
    } 
} 

現在,將項目添加到購物車中,所有你需要做的是這樣的:

$shoppingCart->addItem($someID); 

該對象會將其添加到自身中,並對其進行修改並繼續。

要刪除項目,同樣的協議:

$shoppingCart->removeItem($unwantedItemID); 

,並再次,項目刪除或更新的數量(無論你選擇這樣做),它的總再次更新。

基本上保持低維護。永遠不要讓對象在其中包含不良數據(在這種情況下,如totalValue不匹配其中的項目總和),所以編寫簡單的函數並在可以的地方重新使用它們。

您從主代碼中創建的電話應該儘可能簡單,並將所有重要事項留給對象。這樣,你不會有任何意想不到的錯誤,你的主代碼很容易讀/修改,你可以對這些對象有信心。

+0

是否有任何方法可以一次性將項目集合設置爲o或者我必須逐個刪除項目,如果要清除所有項目 – user825904 2012-08-10 04:17:52

+0

@ john110016您可以根據需要編寫儘可能多的功能。一個'clearAllItems()'函數沒有錯,它刪除所有內容並將'totalValue'設置爲零。我在這篇文章中要說的是確保對象可以做你需要它做的一切事情。這只是一個非常簡單的例子。也許編寫add/delete函數來接受一個數組作爲參數?寫一大堆其他功能,讓它做你想做的所有其他事情。 – Fluffeh 2012-08-10 04:27:22

+0

感謝流感,我會嘗試 – user825904 2012-08-10 04:38:04

相關問題