你好那里的人我是一个新手在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循环会给我一个错误请帮我解决这个谜题谢谢
答案 0 :(得分:0)
在开始会话之前尝试放入包含类def的行;也许在会话开始时,会话变量被反序列化并需要定义(错误消息听起来很相似) - 像这样:
require_once "prduitclass.php";
session_start();