大家好,我是PHP的新手,有人让我写一个购物车系统来添加和删除项目。我投了两个班,一个班一个。item类工作得很好,但是basket类总是在某些时候崩溃。下面是代码:
<?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()被调用之前,或者提供__autolload()函数来加载C:'wamp'www'bwanshop'panierclass.php中的类定义
我不知道如何精确设置我的会话应该是一个类型为" product "的数组篮子类中的foreach循环会给我一个错误,请帮助我解决这个谜语,谢谢
尝试在开始会话之前放入包含class def的行;可能在会话开始时,会话变量被反序列化并需要定义(错误消息听起来很像)-像这样:
require_once "prduitclass.php";
session_start();