Php会话对象交互

Php会话对象交互,php,oop,session,object,Php,Oop,Session,Object,我征求你的意见。 我很难处理会话/对象交互 <?php class ShoppingCart { public $products public function __construct($session) { $this->products = $session['products']; } public addProduct($id) { $this->products[] = new Produc

我征求你的意见。 我很难处理会话/对象交互

<?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方法和所有这些代码。 请不要吹毛求疵,帮我改进一下。
也许有一些这样的交互设计模式或示例?

我喜欢!它简化并消除了我在对象属性/会话划分方面的问题。谢谢
class ShoppingCart {

    private $products = array();

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

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