Php Zend框架中的自定义类

Php Zend框架中的自定义类,php,model-view-controller,zend-framework,Php,Model View Controller,Zend Framework,我将Zend框架与推进一起使用。使用推进对象作为存储在数据库中的对象的模型非常简单,但是如何创建自定义模型,例如使用推进对象的购物车 我正在考虑创建一个名为CartItem和Cart的类。如果CartItem包含一个propel产品类,而Cart包含一个CartItems数组,那么在会话中存储这些内容似乎非常昂贵。通常我只会使用一个数组,但我正在尝试更好地使用OOP您可以使用PHP的接口Serializable: 您可以使用它将购物车的实例转换为更有效的值(您定义了存储的内容),在您的示例中,该

我将Zend框架与推进一起使用。使用推进对象作为存储在数据库中的对象的模型非常简单,但是如何创建自定义模型,例如使用推进对象的购物车


我正在考虑创建一个名为CartItem和Cart的类。如果CartItem包含一个propel产品类,而Cart包含一个CartItems数组,那么在会话中存储这些内容似乎非常昂贵。通常我只会使用一个数组,但我正在尝试更好地使用OOP

您可以使用PHP的接口Serializable:

您可以使用它将购物车的实例转换为更有效的值(您定义了存储的内容),在您的示例中,该值是一个二维数组

试着这样做:

<?php

class Cart implements Serializable {

    // your normal code for the Cart class

    public function serialize() {
        $cartData = array();
        foreach($this->cartItems as $item) {
            $cartData[] = array(
                'count' => $item->getCount(),
                'productId' => $item->getId()
            );
        }
        return serialize($cartData);
    }

    public function unserialize($cartData) {
        $this->cartItem = array();
        foreach($cartData as $item) {
            // replace this with the appropriate propel code
            $product = loadProductWithPropelById($item['id']);
            $this->cartItems[] = new CartItem($item['count'], $product);
        }
    }

}

?>

然后使用serialize将购物车存储在会话中并检索它:

<?php

// Store cart to session
$_SESSION['cart'] = serialize($cart);

// get cart from session
$cart = unserialize($_SESSION['cart']);

?>


祝你的项目好运

在数据库中存储购物车数据没有问题。看见