我是面向对象编程的新手,所以这个问题可能很愚蠢......
我在一个名为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)。当我echo
或var_dump
$_SESSION['myItems']
时,我只会获得最后一个对象。我需要更改什么才能使其正常工作?
当然我确实需要这个对象,所以我可以轻松地从购物车中删除产品 按下“删除”。
答案 0 :(得分:1)
这对我来说很有帮助。
将您的items会话变量定义为数组,然后使用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
)
)