Carrinho de compras: Salvar no banco de dados ou na sessão?

Esta pergunta é tão antiga quanto a pergunta se a galinha ou ovo veio primeiro.

Então, salvar no banco de dados ou na sessão e por quê?

A resposta é simples. Banco.

Vamos dizer que você tenha uma classe para gerenciar o carrinho de compras e já tem um método para calcular o preço do pedido. Algo parecido como:

class Cart
{
    /**
     * @var float
     */
    private $totalPrice;

    /**
     * @return float
     */
    public function getTotalPrice()
    {
        return $this->totalPrice;
    }
}

Então, esta mesma classe podes usar no carrinho, para mostrar o histórico de compras, para apresentar a venda, para enviar o e-mail com o pedido, e aqui para gerenciar os itens quando o seu cliente esta comprando. Ao adicionar um item ao carrinho, podes simplesmente chamar o $cart->getTotalPrice() que já tens o preço total.

Só por isso Kraus?

Não... Imagina que seu cliente pede, após um mês sistema no ar (sim, acontece todo dia, e tens que estar sempre esperando por isso), um sistema de cupons de desconto e você precisa atualizar o carrinho. Então se você salva o carrinho sessão, tens dois locais para alterar. Se estas no banco, só a classe precisa ser alterado.

class Cart
{
    /**
     * @var float
     */
    private $totalPrice;

    /**
     * @var float
     */
    private $discountAmount;

    /**
     * @return float
     */
    public function getTotalPrice()
    {
        return $this->totalPrice - $this->discountAmount;
    }

    /**
     * @return float
     */
    public function getDiscountAmount()
    {
        return $this->discountAmount;
    }

    /**
     * @param float $discountAmount
     */
    public function setDiscountAmount( $discountAmount )
    {
        $this->discountAmount = $discountAmount;
    }
}

E...

A complexidade do seu código vai influenciar na quantidade de bugs que seu sistema tem. Então quanto menos códigos, menos bugs.

E não se esqueça que sites mais rápidos criar usuários felizes, e sites mais rápidos aumenta as chances da venda ser concretizada e a hospedagem é um dos fatores também.

Fique por dentro de nossas novidades, ideias e atualizações