2011-09-30 9 views
2

Propel과 함께 Zend Framework를 사용하고 있습니다. Propel 객체를 데이터베이스에 저장된 것에 대한 모델로 사용하는 것은 쉽지만 propel 객체를 사용하는 장바구니와 같은 사용자 정의 모델을 만드는 방법은 무엇입니까?Zend Framework의 사용자 정의 클래스

저는 CartItem과 Cart라는 클래스를 만들려고합니다. CartItem에 propel Product 클래스가 있고 Cart에 CartItems 배열이 포함되어 있으면 세션에 저장하는 데 비용이 많이 드는 것처럼 보입니다. 일반적으로 그냥 배열을 사용하는 것입니다,하지만 난

+0

카트 데이터를 데이터베이스에 저장하는 데는 아무런 문제가 없습니다. http://stackoverflow.com/questions/297576/storing-shopping-cart-in-session을 참조하십시오. – Phil

답변

1

당신이 사용할 수있는 PHP의 인터페이스 직렬화 OOP와 더 얻으려고 : http://php.net/manual/de/class.serializable.php

당신은보다 효율적으로 카트의 인스턴스를 변환하는 데 사용할 수 있습니다 가치 (당신이 정의한 것, 정확하게 무엇이 저장되어 있는지). 이것은 당신의 경우 2 차원 배열이다. 이 같은

시도 뭔가 :

<?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']); 

?> 

행운을 빕니다!

관련 문제