2011-08-23 93 views
0

我问你的意见。 我与会话/对象交互奋斗....Php会话对象交互

<?php 
class ShoppingCart 
{ 

    public $products 

    public function __construct($session) { 
     $this->products = $session['products']; 
    } 

    public addProduct($id) { 
     $this->products[] = new Product($id); 
     $_SESSION['products'] = $this->products; 
    } 

} 

session_start(); 
$shoppingCart = new ShoppingCart($_SESSION); 
$shoppingCart->addProduct(1); 
?> 

你会如何写类似的代码? 它只是存根,但我不喜欢我的addProduct方法和所有这些代码。 请不要批评,并帮助我改进它。 也许有一些设计模式或这种交互的例子?

回答

1
class ShoppingCart { 

    private $products = array(); 

    public function __construct() { 
     if (isset($_SESSION['products'])) { 
      $this->products = &$_SESSION['products']; 
     } 
    } 

    public addProduct($id) { 
     $this->products[] = new Product($id); 
    } 
} 
+0

我喜欢它!它简化并消除了对象属性/会话鸿沟的问题。谢谢。 – greg606

+0

Upvote并标记为最佳。 :) –