2

私のショッピングカートオブジェクトには、製品のコレクションがあります

ユーザーが製品を追加または削除するとき、2 つのオプションがあります

  1. 古い製品をすべて削除し、新しい製品を維持するか
  2. 新しい製品コレクションを反復して、それが既に存在するかどうかを確認します。そこにない場合は、そのオブジェクトを削除します。そこにない場合は追加します

どちらが良い方法ですか

4

1 に答える 1

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 がその中の項目の合計と一致しないなど)。そのため、単純な関数を作成し、可能な場合はそれらを再利用してください。

メイン コードから行う呼び出しは、できるだけ単純にする必要があり、面倒な作業はすべてオブジェクトに任せます。そうすれば、予期しないエラーが発生することはなく、メイン コードは読みやすく変更しやすく、オブジェクトに自信を持つことができます。

于 2012-08-10T03:14:56.937 に答える