Criando um carrinho de compras com PHP – Parte 3

Rate this post

Olá pessoal,

Essa é a terceira parte do artigo/vídeo aula que ensino como criar um carrinho de compra utilizando PHP Orientado a Objeto e nesta aula, criaremos realmente a parte do carrinho de compras.

Ao pensarmos em um carrinho de compras no mundo real, imaginamos um carrinho mesmo, o qual você possa colocar vários produtos iguais ou diversificados.

Ao desenvolvermos, precisamos armazenar esses itens para que possamos navegar entre as páginas para realizar novas compras. Dessa forma podemos trabalhar com Session, Cookie, Banco de Dados, etc. Então precisamos definir um comportamento do nosso carrinho.

No nosso carrinho teremos que ter a possibilidade de adicionar produto, editar a quantidade, excluir, retornar todos os produtos e o valor total da compra.

<?php 

namespace App\Model\Shopping;

interface Cart{
    public function add(CartItem $item);
    public function update(CartItem $item);
    public function delete($id);
    public function has($id);
    public function getTotal();
    public function getCartItems();
 }

Veja que temos um participante, que é o CartItem. Já sabemos que estamos realizando uma indução de tipo garantido que receba um objeto que seja da classe CartItem.

Esse CartItem será responsável por receber o produto e quantidade. Com isso, o carrinho de compra só fica responsável pelas ações que informamos anteriormente e tira a responsabilidade de gerenciar a quantidade de um produto.

Com nossa interface definida e nosso CartItem definido, basta implementar. Na vídeo aula, utilizei a SESSION, mas poderia utilizar o banco de dados, implementando nossa interface, que teríamos os comportamentos que definimos.

A lógica aplicada é adicionar as informações num atributo chamado itens, e depois salvar as informações numa SESSION.

Em nosso exemplo, salvamos quando foi encerrado o objeto e salvamos o valor serializado na SESSION.

Mas por que serializar os itens do carrinho da SESSION ao invés de adicionar normalmente como fosse num array?

Acontece que após terminar a requisição da sua página, as variáveis são serializadas e quando você inicia a sessão, como session_start, ele vai recuperar as informações, deserializar e se tiver um objeto ele vai recuperar. Se este objeto não foi incluído, ele vai retornar um __PHP_Incomplete_Class.

Como utilizamos autoload, mas incluímos só depois de iniciar session_start, teremos esse problema. Temos duas soluções para resolver isso: ou iniciamos a session_start depois do autoload, ou serializamos o objeto antes de adicionar a sessão e depois basta recuperá-la, mas o autoload já estaria já carregado.

Passamos para nossos controller o que desejamos trabalhar com injeção de dependência passando só a interface, que no caso seria Cart. Dessa forma poderíamos ter uma implementação como CartDb, que continuaria a trabalhar, pois estaria implementado a interface Cart.

<?php 

class CartSession implements Cart{

}

class CartCookie implements Cart{

}

class CartDb implements Cart{

}

Bom, é isso!

Espero que tenham gostado desse conteúdo.

Um abraço e até a próxima.

 

F

David CHC

Trabalha com desenvolvimento web há 10 anos, atuou como programador líder do MX Cursos por mais de 8 anos e hoje dedica-se exclusivamente à criação de cursos para a plataforma. Possui vasto conhecimento em PHP, Javascript, HTML5, CSS3, Gulp.js, GIT, MySQL

Posts recentes

O Futuro da Criação de Sites: Integração de IA e Design Gráfico

Nos últimos anos, testemunhamos uma revolução na forma como os sites são criados, impulsionada pelo…

1 mês atrás

Como a IA Está Revolucionando a Animação 3D

A animação 3D tem sido uma forma poderosa de contar histórias e criar experiências visuais…

1 mês atrás

Lista das 20 Melhores Inteligências Artificiais em 2024 para Criação de Imagens (Todas Gratuitas)

Nos últimos anos, a inteligência artificial (IA) tem revolucionado a forma como criamos e editamos…

2 meses atrás

O Papel da Inteligência Artificial na Criação de Sites com WordPress

Nos últimos anos, a integração da inteligência artificial (IA) na criação de sites tem revolucionado…

2 meses atrás

5 Tendências em Edição de Vídeo Impulsionadas pela Inteligência Artificial

Nos últimos anos, a edição de vídeo evoluiu rapidamente com o avanço da tecnologia, e…

2 meses atrás

O Papel Revolucionário da Inteligência Artificial na Dublagem de Filmes

A dublagem de filmes desempenha um papel fundamental na indústria cinematográfica, permitindo que obras de…

2 meses atrás

This website uses cookies.