1

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

我在一个名为 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']只得到最后一个对象时。我需要更改什么才能使其正常工作?

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

4

1 回答 1

1

这在本地为我工作。

将您的项目会话变量定义为数组,然后使用将它们推送到变量中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
    )

)
于 2013-11-07T19:04:21.457 回答