我在php中创建一个cart bean对象,然后将它存储在session中,当我试图从会话中访问对象数组时,它总是只返回一个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():脚本尝试执行方法或访问不完整对象的属性。请确保课程定义&#34;购物车&#34;您尝试操作的对象是在 unserialize()被调用之前加载或提供__autoload()函数来加载类定义
答案 0 :(得分:4)
错误消息非常清楚:“请确保您尝试操作的对象的类定义”cart“已加载 unserialize()被调用”< / em>的
未能指定的是函数unserialize()
在函数后面调用函数session_start()
来初始化$_SESSION[]
数组。
您可能不使用自动装带器,而是手动包含所需的文件。如果您为自己的课程使用自动加载器,则首先不会出现错误。
您的问题的解决方案非常简单:只需确保include 'cart.php';
(声明class Cart
)的文件之前调用session_start()
。