Подход, который я бы использовал для удаления, заключался бы в создании функции в объекте, который принимает идентификатор (например, номер модели или идентификатор базы данных для продукта), и эта функция затем выполняет свои собственные элементы, и если соответствующий элемент найден удалить его.
Что касается добавления новых элементов, у вас есть функция, которая снова принимает идентификатор элемента и, вооружившись этой информацией, извлекает все применимые данные из базы данных и добавляет их в свою собственную коллекцию.
Вы хотите избежать удаления объекта и создания его снова, если хотите что-то в нем изменить. Попробуйте использовать объекты, у которых есть все функциональные возможности, чтобы делать то, что им нужно, самостоятельно.
Некоторый пример кода, вероятно, будет говорить о многом больше, чем приведенный выше:
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, не совпадающие с суммой элементов внутри него), поэтому пишите простые функции и повторно используйте их там, где это возможно.
Вызовы, которые вы делаете из своего основного кода, должны быть как можно просты и возлагать всю тяжелую работу на объект. Таким образом, вы не получите неожиданных ошибок, ваш основной код будет легко читать/изменять, и вы можете быть уверены в объектах.
person
Fluffeh
schedule
10.08.2012