【问题标题】:Custom Class in Zend FrameworkZend 框架中的自定义类
【发布时间】:2011-09-30 09:16:18
【问题描述】:

我正在使用 Zend 框架和 Propel。使用 Propel 对象作为存储在数据库中的事物的模型很容易,但是如何创建自定义模型,例如使用 propel 对象的购物车?

我正在考虑创建一个名为 CartItem 和 Cart 的类。如果 CartItem 包含一个推进 Product 类,并且 Cart 包含一个 CartItems 数组,那么在会话中存储这似乎非常昂贵。通常我只会使用一个数组,但我正在尝试使用 OOP 变得更好

【问题讨论】:

标签: php model-view-controller zend-framework


【解决方案1】:

你可以使用 PHP 的接口序列化:http://php.net/manual/de/class.serializable.php

您可以使用它将您的购物车实例转换为更有效的值(您定义,确切存储的内容),在您的情况下是一个二维数组。

试试这样的:

<?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);
        }
    }

}

?>

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

<?php

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

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

?>

祝你的项目好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    相关资源
    最近更新 更多