2011-06-07 64 views
3

我有一个名为MyCart的类。php类变量

Class MyCartClass 
{ 
var $MyCart; 

function getCart(){ 
    return $this->MyCart; 
} 

function addItem($item){ 

    if ($this->MyCart){ 
     $this->MyCart .= ','.$item; 
    } 
    else{ 
     $this->MyCart = $item; 
    } 

} 

}; 

$globalCart = new MyCartClass; // create an instance of the class 

可变"$MyCart"是包含在购物车中的所有项目,用逗号分隔的字符串。

现在,我将这个类保存到一个名为"cart.php"的文件中,并将其包含在另一个文件中。

但是,每次我调用函数"addItem"时,if语句都会转到else分支,这意味着"$MyCart"变量不包含购物车的当前状态。

我是否需要将购物车的状态存储到“会话”变量中? 导致这种方式它将可以从所有文件确保..

我将不胜感激任何形式的帮助!

谢谢。

+0

我不能看到任何错误的代码,只要你在相同的程序运行(HTTP调用,或其他)调用它。除非您使用会话,否则任何*都不会在HTTP调用之间持续存在。 – 2011-06-07 13:02:06

回答

2

如果你的意思是在请求之间保存,那么你需要把它放在$ _SESSION中。

否则在一个请求中,您可以使用您的$globalCart而不会丢失您的$myCart变种的内容。

+0

谢谢你“yes123”。看来,除了将其存储到$ _SESSION中,我想没有别的办法。 – george 2011-06-07 13:11:43

5

不要使用字符串来存储列表。这只是一个糟糕的主意。

相反,存储$items作为一个数组,并在构造函数中定义它

class Cart { 

    function __construct() { 
     $this->items = array(); 
    } 

    function add($item) { 
     $this->items[] = $item; 
    } 

    function save() { 
     $SESSION["cart"] = $this->items; 
    } 

    function get_items_string() { 
     return join(",", $this->items); 
    } 

} 

我的PHP是一个有点生疏,但应该让你开始。

+1

这个问题不是关于如何正确存储它。 – dynamic 2011-06-07 13:04:22

+0

谢谢。因此,通过将“添加新项目”功能的结果存储到该数组中不足以在整个站点中保存此结果,对吧?我绝对需要一个会议。那是对的吗。感谢大家的即时响应! – george 2011-06-07 13:10:19

+2

是的,绝对使用会话,是的,我知道这个问题不是关于如何存储它,但我认为OP有错误的印象,会话只能存储字符串,这是不正确的。 – 2011-06-10 15:41:12

1

为了简化这只是将数据存储在一个数组,并使用序列化和反序列化到存储数据:

Class MyCartClass { 
    var $MyCart = array(); 

    public function __construct(){ 
     $this->MyCart = deserialize($_SESSION['CART']); 
    } 

    public function __destruct(){ 
     $_SESSION['CART'] = serialize($this->MyCart); 
    } 


    function getCart(){ 
     return $this->MyCart; 
    } 

    function addItem($item){ 
     $this->MyCart[] = $item; 
    } 
} 

请注意,我只是写了这个快速,因为我没有没有运行现在就可以运行它。 :-)

+1

我很确定你不需要序列化会话数据。 – 2011-06-07 13:03:22

0

你甚至可以序列化所有类到$ _SESSION [] ...但通常好主意是存储会话中的一些id - 例如用户ID &将所有其他数据存储在mysql中。每次得到它,需要...