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

时间:2015-02-11 08:56:36

标签: php session

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

1 个答案:

答案 0 :(得分:4)

错误消息非常清楚:“请确保您尝试操作的对象的类定义”cart“已加载 unserialize()被调用”< / em>的

未能指定的是函数unserialize()在函数后面调用函数session_start()来初始化$_SESSION[]数组。

您可能不使用自动装带器,而是手动包含所需的文件。如果您为自己的课程使用自动加载器,则首先不会出现错误。

您的问题的解决方案非常简单:只需确保include 'cart.php';(声明class Cart的文件之前调用session_start()