Вы находитесь на странице: 1из 17

Dvidas?

Primeiramente, precisamos nos certificar que os conceitos


anteriormente vistos foram entendidos para a criao do
nosso projeto final.
MVC, Singleton e PDO so pr-requisitos.
preciso ter instalados na sua mquina os softwares abaixo:

ou

2
Orientaes Gerais
Iniciamos agora o nosso projeto de final de curso: criar uma loja virtual
utilizando Orientao a Objetos e MVC.
Antes vamos alguns esclarecimentos:
1) Ser apresentada uma arquitetura nestes slides, preciso us-la?
No! Ela serve apenas como base. Se achar melhor, pode criar sua
loja virtual do zero, usando os padres e arquiteturas.
2) Posso simplesmente copiar o esqueleto da loja virtual e
entregar?
No, at porque trata-se de um esqueleto. A idia que voc
implemente tudo o que foi visto neste curso e no anterior.
3) Preciso me preocupar com o layout da loja?
No. O importante a funcionalidade.

3
O projeto
Um sistema de loja virtual pode ser um projeto bem complexo.
No faltam exemplos de grandes lojas que realizam boa parte
de suas vendas apenas pela internet:
http://www.saraiva.com.br
http://www.submarino.com.br
http://www.americanas.com.br
http://www.comprafacil.com.br

Conhecer estes cases pode ser importante para a criao de


sua loja!

4
Arquitetura: Backend
Requisio HTTP admin.php

AdminController

Carrinho Compras

Livros Usurios

Login

View
Resposta HTTP
topo.tpl.php index.tpl.php rodape.tpl.php

5
Arquitetura: Frontend
Requisio HTTP index.php

FrontController

Carrinho Compras

Livros Usurios
Login

View
topo.tpl.php index.tpl.php rodape.tpl.php
Resposta HTTP
carrinho.tpl.php listar.tpl.php logar.tpl.php

6
Estrutura de arquivos
/var/www/loja
view/
admin.php
admin/
index.php topo.tpl.php
bootstrap.php index.tpl.php
config.php rodape.tpl.php
app/ livros/
AdmController.php inserir.tpl.php
FrontController.php alterar.tpl.php
model/ usuarios/
inserir.tpl.php
Carrinho.php alterar.tpl.php
Compras.php front/
Livros.php topo.tpl.php
Usuarios.php index.tpl.php
View.php rodape.tpl.php
lib/ compras/
carrinho.tpl.php
Banco.php livros/
Login.php listar.tpl.php
usuarios/
logar.tpl.php

7
Configurando o banco
1. Altere o arquivo config.php colocando as credenciais de
acesso ao banco de dados que voc criou.
<?php

$config = array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'loja',
'user' => 'loja',
'pass' => '123456'
);

Dica: Preferencialmente, no deixe o root como usurio


setado em seu projeto. Voc pode criar outro usurio no
mysql com permisses de INSERT, DELETE, UPDATE, etc,
apenas no banco loja.

8
Configurando o banco
2. Acesse o MySQL:
# mysql -u root -p

3. Verifique se voc no tem o database 'loja' criado:


mysql> show databases;

4. Crie o database loja e selecione para uso:


mysql> create database loja;
mysql> use loja

5. Crie um usurio 'loja' para acessar o banco de dados:


mysql> create user 'loja'@'localhost' identified by '123456';

6. Conceda permisso de acesso a todas as tabelas do banco 'loja':


mysql> grant all on loja.* to loja;

9
Configurando o banco
7. Crie as tabelas de acordo com o arquivo banco.sql:
mysql> CREATE TABLE `livros`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`isbn` varchar(20) NOT NULL,
`autor` varchar(50) NOT NULL,
`titulo` varchar(100) NOT NULL,
`preco` float NOT NULL,
`sumario` text NOT NULL,
PRIMARY KEY (`id`)
);

mysql> INSERT INTO `livros` (`id`, `isbn`, `autor`, `titulo`, `preco`, `sumario`)
VALUES (1, '0973862149', 'Davey Shafik e Ben Ramsey', 'Zend PHP 5
Certification Study Guide', 35.95, 'The second edition of the popular
Zend PHP 5 Certification Study developers who wish to take the exam.');

mysql> INSERT INTO `livros` (`id`, `isbn`, `autor`, `titulo`, `preco`, `sumario`)
VALUES (2, '9780973862188', 'Ivo Jansch', 'Guide to Enterprise PHP
Development', 39.95, 'Whether you are running a large scale web app
in a PHP-based ... for you and your development team.');

mysql> INSERT INTO `livros` (`id`, `isbn`, `autor`, `titulo`, `preco`, `sumario`)
VALUES (3, '321321321', 'Z', 'Fulano', 29.9, 'asdasdasdasd');

10
Configurando o banco
(continuao...)
mysql> CREATE TABLE `usuarios` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(25) NOT NULL,
`senha` varchar(40) NOT NULL,
`admin` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
);

mysql> INSERT INTO `usuarios` (`id`, `nome`, `senha`, `admin`)


VALUES (1, 'admin', '123456', 1);

mysql> INSERT INTO `usuarios` (`id`, `nome`, `senha`, `admin`)


VALUES (2, 'fulano', '654321', 0);

11
Configurando o banco
8. Testando para ver se est tudo ok:
mysql> show tables;
mysql> select * from livros;
mysql> select * from usuarios;

9. Acesse o sistema da loja:


http://localhost/loja/index.php

12
Acessando a loja...

13
Diretrizes
Agora a hora de pensar no que precisa ou no ter na sua loja:

preciso um painel de controle?


Sim, algum deve ter o poder de cadastrar produtos e usurios.
Os usurios precisaro estar logados?
Se seguirmos a lgica das grandes lojas, o usurio s precisar estar
logado quando resolver finalizar a compra. Por outro lado, apenas
usurios logados podero acessar o Painel de Controle (backend) da
aplicao.
Como ser a pgina inicial?
Procure no se preocupar neste momento com a aparncia, e sim com a
funcionalidade. Procure seguir o modelo do slide anterior. Caso ache
interessante, pode colocar uma lista de livros em destaque na pgina
inicial.

14
Diretrizes
Criarei um sistema de busca?
uma boa ideia, mas no necessrio. O foco ser bastante didtico,
o que no impede que voc adicione quais funcionalidades achar
pertinentes.
Devo usar exatamente o banco do exemplo para minha loja?
De preferncia no. Seria importante se sua aplicao armazenasse as
compras realizadas, alm de emitir uma espcie de recibo.

15
Por onde comear?
1. Defina a sua base de dados. Ateno ao criar o model Compras, pois ele
trabalha diretamente com o Carrinho, que no manipula dados do banco, e sim
da sesso do usurio.

LIVRO COMPRAS USUARIO

id id id
titulo id_livro nome
isbn id_usuario senha
sinopse is_admin
autor
preco

2. Escreva os Controllers, usando parmetros para direcionar qual model e qual


template da view ser chamado. Por exemplo:
http://localhost/loja/index.php?module=livros&action=listar

O Controller deve pegar os dados do model Livros, mtodo listar(), e o template


chamado deve estar numa pasta livros e o arquivo se chamar listar.

16
Mos Obra!!!
Agora que j sabemos por onde comear, vamos inciar o projeto!
Analise o modelo e veja se esta a melhor forma de implementao.
Lembre que voc no precisa seguir o modelo se no quiser, mas
precisa usar Orientao a Objetos + MVC.
Fique vontade para utilizar Singleton,
PDO, mtodos mgicos e tudo aquilo que
vimos em aula.
Escolha o banco de dados de sua
preferncia.
Acesse as lojas virtuais citadas para ter uma
idia melhor de como elas funcionam.
O monitor e o instrutor estararo disponveis
em private para dvidas individuais.

17