静的変数とシングルトンパターンを使用すると、別のページが読み込まれたときにカート内のどのアイテムを記憶しているかを覚えている簡単なショッピングカートを作成するのは簡単だと思いました。
ページが更新されたときにショッピングカートに何が入っていたかを思い出せないという問題があります。
以下のコードに問題がありますか、それともグローバルまたはmysqlデータベースを使用する必要がありますか。
状態を保存するための最良の方法は何ですか。
<?php
//create a singleton class
class shoppingCart {
private static $_shoppingCartItems = array();
private static $_instance = null;
private function __construct(){
}
public static function getInstance(){
if(self::$_instance == null)
self::$_instance = new shoppingCart();
return self::$_instance;
}
public function add(ShoppingItem $item){
$this->_shoppingCartItems[] = $item;
}
public function cartCount(){
return count($this->_shoppingCartItems);
}
}
?>
実装
$item = new shoppingItem();
$shoppingCart = shoppingCart::getInstance();
$shoppingCart->add($item);
$shoppingCart->add($item);
//should increment by 2 on each page load but it doesn't
echo $shoppingCart->cartCount();