我是面向对象编程的新手,所以这个问题可能很愚蠢......
我在一个名为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']
时,我只得到最后一个对象。我需要更改什么才能使其正常工作?
当然,我确实需要该对象,以便我可以轻松地从购物车中删除产品,如果按下"删除"。
这在本地对我有用。
将项目会话变量定义为数组,然后使用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
)
)