【发布时间】:2014-05-09 12:50:23
【问题描述】:
大家好,我是 php 中的新手,我被告知要编写一个购物车系统来添加和删除项目。我为每个类死记了两个类。项目类运行良好,但购物篮类在某些时候不断崩溃.这里是代码:
<?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() 被调用之前加载或提供 __autoload() 函数以在 C:\wamp 中加载类定义\www\bwanshop\panierclass.php 第 27 行
我不知道如何确定我的会话应该是“产品”类型的数组 篮子类中的foreach循环会给我一个错误请帮我解决这个谜题谢谢
【问题讨论】:
-
错误信息建议在开始会话之前加载类定义(包括“prduitclass.php”;)。
-
我刚刚检查并在可能出现 addToCart 按钮的所有页面上完成了它,并且您可能已经注意到,在篮子类顶部但仍然没有运气仍然得到相同的错误。如果我是加载类错误请告诉我如何加载(自动加载类?)
-
我已经完成了它仍然得到相同的错误。var_dump($prod) 正确地显示对象(produit) 意味着它正确加载了类在我的代码中可能会导致什么? _autoload 函数工作正常,但它仍然在我的会话中存储一个未完成的对象
-
@fast 你能检查一下篮子课吗,也许我错过了什么