Blog do MX Cursos

Criando um carrinho de compras com PHP – Parte 3

Avaliar 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.

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.

Bom, é isso!

Espero que tenham gostado desse conteúdo.

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

 

F

David CHC

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

Your Header Sidebar area is currently empty. Hurry up and add some widgets.

Newsletter

Newsletter

Receba em seu e-mail conteúdos semanais sobre desenvolvimento, design, audiovisual e tecnlogia.

Inscrição realizada com sucesso!