使用Session作为对象数组。

时间:2014-05-09 12:50:23

标签: php arrays session

你好那里的人我是一个新手在PHP我被告知写一个购物车系统添加和删除items.i死了两个类一个。项目类很好但篮子类在某些时候仍然崩溃代码是:

<?php
class produit
{
private $nom;
private $prix;
private $id;
private $categorie;
private $qty;
public function setProduit($nom,$prix,$id,$cat)
{
    $this->nom=$nom;
    $this->prix=$prix;
    $this->id=$id;
    $this->categorie=$cat;
    $this->qty=1;
}
public function getNom()
{
    return $this->nom;
}
public function getPrix()
{
    return $this->prix;
}
public function getCategorie()
{
    return $this->categorie;
}
public function getID()
{
    return $this->id;
}
public function getQty()
{
    return $this->qty;
}
public function changeQty()
{
    $this->qty+=1;
}
public function getThumb()
{
    try
    {
        require"connectionbd.php";
        $req="select images from bs_produits where id=:i";
        $res=$bdd->prepare($req);
        $res->execute(array('i'=>$this->id));
        $v=$res->fetch(PDO::FETCH_OBJ);
        $v->images=str_replace("../","",$v->images);
        $v->images.="/thumb1.png";
        return $v->images;

    }
    catch(Exception $e)
      {
        die('Erreur : ' . $e->getMessage().' a la ligne '.$e->getLine().' dans le fichier '.$e->getFile());
      }
}
  }
 ?>

以下是篮子类代码:

<?php
 @session_start();
 include"prduitclass.php";
 class panier
  {
//le panier a un tableau de 10 produits

public function setPanier()
{
    if(!isset($_SESSION['basket']))
        $_SESSION['basket']=array();

}
private function lookforduplicate( $prod)
{
    echo"<script>console.log('".var_dump($prod->getNom())."')</script>";
    $i=0;
    $exit=0;
    if(empty($_SESSION['basket']))
    {
        return $exit;
    }
    else
    {
        foreach($_SESSION['basket'] as $produit)
            {
                if($produit->getID()===$prod->getID())
                {
                    $_SESSION['basket'][$i]->changeQty();
                    $exit=1;
                }
                $i++;
            }
        }
    return $exit;
}
public function addProduit( $prod)
{

    $v=0;
    if(!$this->lookforduplicate($prod))
    {

        array_push($_SESSION['basket'], $prod);
        $v=1;
    }
    else
        $v=0;
    return $v;
}
public function removeProduit( $prod)
{
    $i=0;
    foreach($_SESSION['basket'] as $produit)
    {
        if($produit->getID()===$prod->getID())
        {
            unset($_SESSION['basket'][$i]);
        }
    }
}


 }

 ?>

最后继承了我从php获得的错误:

  

致命错误:panier :: lookforduplicate():脚本尝试执行方法或访问不完整对象的属性。请确保在 unserialize()被调用之前加载了您尝试操作的对象的类定义“produit”,或者提供__autoload()函数以在C:\ wamp中加载类定义第27行\ www \ bwanshop \ panierclass.php

我不知道如何确定我的会话应该是“产品”类型的数组 篮子类中的foreach循环会给我一个错误请帮我解决这个谜题谢谢

1 个答案:

答案 0 :(得分:0)

在开始会话之前尝试放入包含类def的行;也许在会话开始时,会话变量被反序列化并需要定义(错误消息听起来很相似) - 像这样:

require_once "prduitclass.php";
session_start();