如何在$session数组变量中保存许多对象


how to save many objects in a $session array variable

我是面向对象编程的新手,所以这个问题可能很愚蠢......

我在一个名为classProduct的单独文件中创建了我的类.php

<?php
class  product{
    public $prodId;
    public $prodName;
    public $prodPrice;
    public function __construct($prodId,$prodName,$prodPrice){
        $this->prodId = $prodId;
        $this->prodName=$prodName;
        $this->prodPrice=$prodPrice;
    }
    public function get_prodId(){
        return $this->prodId;
    }
    public function get_prodName(){
        return $this->prodName;
    }
    public function get_prodPrice(){
        return $this->prodPrice;
    }
}
?>

然后我尝试在 $_SESSION 变量中创建一个新对象。这发生在另一个名为dailySales的文件中.php我使用以下方法包含以前的文件:

include_once("classProduct.php");

我想做的是保存$_SESSION['myItems']每个新对象。我正在尝试类似的东西:

$newItem= new product($var,$var,$var);
$_SESSION['myItems']=array($newItem); // I believe here is where I do it wrong

每次买家再选择一个产品时,页面都会重新加载(使用 ajax)。当我echovar_dump $_SESSION['myItems']时,我只得到最后一个对象。我需要更改什么才能使其正常工作?

当然,我确实需要该对象,以便我可以轻松地从购物车中删除产品,如果按下"删除"。

这在本地对我有用。

将项目会话变量定义为数组,然后使用array_push将它们推送到变量中

class product {
  public $prodId;
  public $prodName;
  public $prodPrice;
  public function __construct($prodId, $prodName, $prodPrice) {
    $this->prodId    = $prodId;
    $this->prodName  = $prodName;
    $this->prodPrice = $prodPrice;
  }
  public function get_prodId() {
    return $this->prodId;
  }
  public function get_prodName() {
    return $this->prodName;
  }
  public function get_prodPrice() {
    return $this->prodPrice;
  }
}

然后像这样使用它:

$product = new product(1, "test", 23);
$product2 = new product(2, "test2", 43);
$_SESSION['items'] = array();
array_push($_SESSION['items'], $product, $product2);
echo '<pre>';
print_r($_SESSION['items']);
echo '</pre>';

这是print_r()的输出

Array
(
    [0] => product Object
        (
            [prodId] => 1
            [prodName] => test
            [prodPrice] => 23
        )
[1] => product Object
    (
        [prodId] => 2
        [prodName] => test2
        [prodPrice] => 43
    )
)