Hallo,
ich möchte als Übungsprojekt einen kleinen Shop basteln.
Den Einkaufskorb bilde ich über ein Array ab.
Der Key ist dabei die Produkt-ID, der Value die Anzahl der Waren im Korb.
Wird ein neues Produkt hinzugefügt, möchte ich zunächst schauen, ob die Ware schon vorhanden ist. Wenn ja, soll einfach der Zähler erhöht werden, wenn nein soll ein neuer Key angelegt werden.
Beim Löschen möchte ich den jeweiligen Key entfernen, sobald der Value 0 ist, sobald also keine Waren mehr im Korb sind.
Mein Code:
Für mich sieht das aber alles ziemlich ... zusammen gefrickelt aus.
Kann man das irgendwie besser / schöner schreiben?
ich möchte als Übungsprojekt einen kleinen Shop basteln.
Den Einkaufskorb bilde ich über ein Array ab.
Der Key ist dabei die Produkt-ID, der Value die Anzahl der Waren im Korb.
Wird ein neues Produkt hinzugefügt, möchte ich zunächst schauen, ob die Ware schon vorhanden ist. Wenn ja, soll einfach der Zähler erhöht werden, wenn nein soll ein neuer Key angelegt werden.
Beim Löschen möchte ich den jeweiligen Key entfernen, sobald der Value 0 ist, sobald also keine Waren mehr im Korb sind.
Mein Code:
PHP-Code:
/**
* provides functions to edit users shopping cart
* and calculate final amount to pay
*/
class CartService{
/**
* adds product to users cart
* creates new key-value-pair when cart has no matching product
* @param User $user
* @param Product $product
* @return new cart
*/
public function add(User $user,Product $product){
$cart = $user->getShoppingCart();
if(array_key_exists($product->getID(), $cart)){
$count = $cart[$product->getID()];
$cart[$product->getID()] = $count+1;
} else {
$cart[$product->getID()] = 1;
}
$user->setShoppingCart($cart);
return $cart;
}
/**
* deletes product from users cart
* deletes key-value-pair when number of products gets zero
* @param User $user
* @param Product $product
* @return new cart
*/
public function delete(User $user,Product $product){
$cart = $user->getShoppingCart();
$count = $cart[$product->getID()];
$count -= 1;
if($count == 0){
unset($count[$product->getID()]);
} else {
$cart[$product->getID()] = $count;
}
$user->setShoppingCart($cart);
return $cart;
}
}
Kann man das irgendwie besser / schöner schreiben?
Kommentar