我在php中创建了一个cart-bean对象,然后将其存储在会话中——当我试图从会话访问对象数组时,它总是只返回一个bean对象这是豆类
Class Cart{
private $quanity;
private $amount;
function getQuantity() {
return $this->quantity;
}
function getAmount() {
return $this->amount;
}
function setQuantity($quantity) {
$this->quantity = $quantity;
}
function setAmount($amount) {
$this->amount = $amount;
}
AddToCart.php
$c = new cart();
$c->setAmount("500");
$c->setQuantity("10");
if(isset($_SESSION["cartArray"])){
$ar = $_SESSION["cartArray"];
$ar[]=$c;
$_SESSION["cartArray"]=$ar;
}
else{
$c;
$_SESSION['cartArray']= [];
$_SESSION['cartArray'][]=$c;
}
orderHandler.php
$ar = $_SESSION["cartArray"];
foreach ($ar as $value) {
echo '<pre>';
print_r($value);
echo '</pre>';
}
它给了我__PHP_Incomplete_Class对象如果尝试在循环中写入以下行
$echo $value->getAmount();
错误:
致命错误:main():脚本试图执行方法或访问不完整对象的属性。请确保类定义";推车";在调用unserialize()或提供__autoload()函数来加载类定义之前,您试图操作的对象的
错误消息说得很清楚:"请确保在调用unserialize()之前加载了您尝试操作的对象的类定义"cart""。
它没有指定的是函数session_start()
在后台调用函数unserialize()
来初始化$_SESSION[]
阵列。
您可能不使用自动加载器,而是手动包含所需的文件。如果你为你的类使用自动加载器,你一开始就不会得到错误。
问题的解决方案非常简单:在调用session_start()
之前,只需确保include 'cart.php';
(声明class Cart
的文件)。