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


How to access bean objects in session __PHP_Incomplete_Class Object

我在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的文件)