Você está na página 1de 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

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.

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!

Arquitetura: Backend
admin.php

Requisio HTTP

AdminController
Carrinho

Compras

Livros

Usurios

Login

Resposta HTTP

View
topo.tpl.php

index.tpl.php

rodape.tpl.php

Arquitetura: Frontend
index.php

Requisio HTTP

FrontController
Carrinho

Compras

Livros

Usurios
Login

View
Resposta HTTP

topo.tpl.php

index.tpl.php

rodape.tpl.php

carrinho.tpl.php

listar.tpl.php

logar.tpl.php

Estrutura de arquivos
/var/www/loja
admin.php
index.php
bootstrap.php
config.php

app/
AdmController.php
FrontController.php

model/
Carrinho.php
Compras.php
Livros.php
Usuarios.php
View.php

lib/
Banco.php
Login.php

view/
admin/

topo.tpl.php
index.tpl.php
rodape.tpl.php

livros/
inserir.tpl.php
alterar.tpl.php

usuarios/
inserir.tpl.php
alterar.tpl.php

front/
topo.tpl.php
index.tpl.php
rodape.tpl.php

compras/

carrinho.tpl.php

livros/
listar.tpl.php

usuarios/

logar.tpl.php

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'
=>
'host'
=>
'database' =>
'user'
=>
'pass'
=>
);

'mysql',
'localhost',
'loja',
'loja',
'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;

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
id
titulo
isbn
sinopse
autor
preco

COMPRAS
id
id_livro
id_usuario

USUARIO
id
nome
senha
is_admin

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

Você também pode gostar