我正在 php 中创建一个购物车 bean 对象,然后将它存储在会话中,当我尝试从会话访问对象数组时,它总是只返回一个 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;
}
Run Code Online (Sandbox Code Playgroud)
添加到购物车.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;
}
Run Code Online (Sandbox Code Playgroud)
订单处理程序
$ar = $_SESSION["cartArray"];
foreach ($ar as $value) {
echo '<pre>';
print_r($value);
echo '</pre>';
}
Run Code Online (Sandbox Code Playgroud)
它给了我 __PHP_Incomplete_Class 对象,如果尝试在循环中编写以下行
$echo $value->getAmount();
Run Code Online (Sandbox Code Playgroud)
错误:
致命错误:main():脚本尝试执行方法或访问不完整对象的属性。请确保在调用 unserialize()之前加载了您尝试操作的对象的类定义“购物车”或提供 __autoload() 函数来加载类定义
错误消息说得很清楚:“请确保在调用 unserialize()之前加载了您尝试操作的对象的类定义“购物车” ”。
它未能指定的是该函数unserialize()是由函数session_start()在幕后调用以初始化$_SESSION[]数组。
您可能不使用自动加载器,而是手动包含所需的文件。如果您为您的类使用自动加载器,您首先不会收到错误。
你的问题的解决方法很简单:只要确保你include 'cart.php';(声明的文件class Cart)之前调用session_start()。