如何在会话中访问 bean 对象 __PHP_Incomplete_Class 对象

Sah*_*nda 0 php session

我正在 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() 函数来加载类定义

axi*_*iac 5

错误消息说得很清楚:“请确保在调用 unserialize()之前加载了您尝试操作的对象的类定义“购物车” ”

它未能指定的是该函数unserialize()是由函数session_start()在幕后调用以初始化$_SESSION[]数组。

您可能不使用自动加载器,而是手动包含所需的文件。如果您为您的类使用自动加载器,您首先不会收到错误。

你的问题的解决方法很简单:只要确保你include 'cart.php';(声明的文件class Cart之前调用session_start()