Você está na página 1de 152

CakePHP

Aprendendo a fazer o primeiro bolo

por Lo Hackin

Cardpio

Roteiro
O PHP ontem e hoje
Lgica x Apresentao
MVC
CakePHP
Aplicao exemplo: Blog
Concluses

Mamma mia!

Pratos do dia

PHP Carbonara
Lgica misturada a apresentao

Eita nis!

Pratos do dia

Sistema Ovo-Cozido
Rpido, fcil mas sempre fede no fim

Oxente!

Pratos do dia

Arrumadinho MVC
Modelo-Viso-Controlador

Agora sim...

Pratos do dia

E para sobremesa ... BOLO!

Sobre o cozinheiro

Lo Hackin
Lo Hackin desenvolvedor desde 96 e j
passou por algumas das principais empresas
de internet capixabas, desenvolvendo
solues para internet, dispositivos mveis e
desktop. Apaixonado por PHP a 7 anos,
atualmente trabalha como analista de
solues JavaEE para attPS Tech (So Paulo) e
como Consultor em solues para internet
em empresas privadas.

O PHP ontem e hoje

O PHP ontem

O PHP ontem e hoje

O PHP ontem
Linguagem para apps simples

O PHP ontem e hoje

O PHP ontem
Linguagem para apps simples
POGramadores doides

O PHP ontem e hoje

O PHP ontem
Linguagem para apps simples
POGramadores doides
Baixa remunerao

O PHP ontem e hoje

O PHP ontem
Linguagem para apps simples
POGramadores doides
Baixa remunerao
Consistncia discutvel

O PHP ontem e hoje

O PHP ontem
Linguagem para apps simples
POGramadores doides
Baixa remunerao
Consistncia discutvel
Falta de padres de design

O PHP ontem e hoje

O PHP ontem
Linguagem para apps simples
POGramadores doides
Baixa remunerao
Consistncia discutvel
Falta de padres de design

O PHP ontem e Hoje

Agravantes

O PHP ontem e Hoje

Agravantes
Falta de conhecimento terico de programao

O PHP ontem e Hoje

Agravantes
Falta de conhecimento terico de programao
Rpido == feito nas coxas

O PHP ontem e Hoje

Agravantes
Falta de conhecimento terico de programao
Rpido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)

O PHP ontem e Hoje

Agravantes
Falta de conhecimento terico de programao
Rpido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
Script Kiddies, sobrinhos e amigos que mexem com
informtica

O PHP ontem e Hoje

Agravantes
Falta de conhecimento terico de programao
Rpido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
Script Kiddies, sobrinhos e amigos que mexem com
informtica
Herana estrutural: funes redundantes, includes, etc ...

O PHP ontem e Hoje

O PHP hoje

O PHP ontem e Hoje

O PHP hoje
Maturidade para solues corporativas

O PHP ontem e Hoje

O PHP hoje
Maturidade para solues corporativas
OO verdadeiro

O PHP ontem e Hoje

O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
Remunerao de gente

O PHP ontem e Hoje

O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
Remunerao de gente
Montes e montes de documentao

O PHP ontem e Hoje

O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
Remunerao de gente
Montes e montes de documentao
N projetos ... FRAMEWORKS!

O PHP ontem e Hoje

O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
Remunerao de gente
Montes e montes de documentao

O tempo passa!
O tempo

N projetos ... FRAMEWORKS!

voa!

Lgica x Apresentao

PHP gerando HTML

Lgica x Apresentao

PHP espaguete

Lgica x Apresentao

PHP espaguete

Lgica x Apresentao

Ops... Problemas!
Codificao e manuteno custosa
Quebra pau com designers
Redundncia de mtodos, funes, includes ...
Despadronizao ruim!!!
Segmentao da lgica

Lgica x Apresentao

Ops... Problemas!

PHP Carbonara

Lgica x Apresentao

Ops... Problemas!
=
PHP Carbonara

MVC

O que MVC

MVC

O que MVC
Padro de arquitetura de software

MVC

O que MVC
Padro de arquitetura de software
Separao da aplicao em trs partes:

MVC

O que MVC
Padro de arquitetura de software
Separao da aplicao em trs partes:

Os dados da aplicao

MVC

O que MVC
Padro de arquitetura de software
Separao da aplicao em trs partes:

Os dados da aplicao

A apresentao da informao

MVC

O que MVC
Padro de arquitetura de software
Separao da aplicao em trs partes:

Processa os eventos da aplicao

Os dados da aplicao

A apresentao da informao

MVC

Caractersticas

MVC

Caractersticas
Base funcional para toda a aplicao

MVC

Caractersticas
Base funcional para toda a aplicao
Conjunto de ferramentas, classes ...

MVC

Caractersticas
Base funcional para toda a aplicao
Conjunto de ferramentas, classes ...
Consistncia e produtividade

MVC

Caractersticas
Base funcional para toda a aplicao
Conjunto de ferramentas, classes ...
Consistncia e produtividade
Desenvolvimento em paralelo

MVC

Caractersticas
Base funcional para toda a aplicao
Conjunto de ferramentas, classes ...
Consistncia e produtividade
Desenvolvimento em paralelo
Manuteno e escalabilidade menos custosa

MVC

Como funciona, tio ?

MVC

Como funciona, tio ?


Browser envia requisio aplicao

MVC

Como funciona, tio ?


Browser envia requisio aplicao

http://site/hello

MVC

Como funciona, tio ?


Browser envia requisio aplicao
O controller processa a ao

http://site/hello

MVC

Como funciona, tio ?


Browser envia requisio aplicao
O controller processa a ao
O controller processa a requisio
e acessa a lgica de negcio
(model) da aplicao

http://site/hello

MVC

Como funciona, tio ?


Browser envia requisio aplicao
O controller processa a ao
O controller processa a requisio
e acessa a lgica de negcio
(model) da aplicao
O model acessa a base de dados
da aplicao para executar a ao
requisitada pelo controller

Mysql, Postgres,
Oracle e muitos
outros

http://site/hello

MVC

Como funciona, tio ?


Browser envia requisio aplicao
O controller processa a ao
O controller processa a requisio
e acessa a lgica de negcio
(model) da aplicao
O model acessa a base de dados
da aplicao para executar a ao
requisitada pelo controller
O controller ento seleciona a
view correspondente a ao
Mysql, Postgres,
Oracle e muitos
outros

http://site/hello

MVC

Como funciona, tio ?


Browser envia requisio aplicao
O controller processa a ao
O controller processa a requisio
e acessa a lgica de negcio
(model) da aplicao
O model acessa a base de dados
da aplicao para executar a ao
requisitada pelo controller
O controller ento seleciona a
view correspondente a ao
O controller renderiza a view
incluindo os dados de resposta
da ao

Mysql, Postgres,
Oracle e muitos
outros

http://site/hello

MVC

Como funciona, tio ?


Browser envia requisio aplicao
O controller processa a ao
O controller processa a requisio
e acessa a lgica de negcio
(model) da aplicao
O model acessa a base de dados
da aplicao para executar a ao
requisitada pelo controller
O controller ento seleciona a
view correspondente a ao
O controller renderiza a view
incluindo os dados de resposta
da ao

Mysql, Postgres,
Oracle e muitos
outros

O controller devolve a resposta


para o browser

http://site/hello

MVC

Frameworks PHP

CakePHP

O que CakePHP
CakePHP um framework de desenvolvimento
rpido para PHP que prov uma arquitetura
extensvel para desenvolvimento, manuteno e
implantao de aplicaces. Usando padres de
projeto como MVC e ORM com conveno
ao invs de configurao, o CakePHP reduz
custos de desenvolvimento e ajuda
desenvolvedores a escrever menos cdigo.

CakePHP

O que CakePHP

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5
Arquitetura MVC

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sesses, Segurana ...

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sesses, Segurana ...
CRUD (Create-Read-Update-Delete) integrado

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sesses, Segurana ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sesses, Segurana ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
Internacionalizao

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sesses, Segurana ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
Internacionalizao
Comunidade ativa e crescente

CakePHP

O que CakePHP
Compatvel com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sesses, Segurana ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
Internacionalizao
Comunidade ativa e crescente

Ativa e crescente ?

NOFA!
Eu quero!

CakePHP

Requisitos mnimos
Um computador =)
Servidor HTTP (Apache 2)
PHP4 ou PHP5
Base de dados (opcional)
MySQL, Postgres, SQL Server, Oracle, SQLite,
ODBC, ADOdb, Firebird DB2
Caf, ch ou suco (opcional)

CakePHP

Instalando
Baixar o CakePHP (http://cakephp.org)
Descompactar o arquivo em seu servidor web

CakePHP

Instalando
Configurar o http.conf

CakePHP

Instalando
Configurar o http.conf

CakePHP

Instalando
Configurar o http.conf

CakePHP

Instalando
Configurar o http.conf

CakePHP

Instalando
Configurar o http.conf

CakePHP

Instalando
Execute e teste!

CakePHP

Estrutura Funcional

CakePHP

Estrutura Funcional

CakePHP

Estrutura Funcional
Model

View

Controller

CakePHP

Estrutura Funcional
Model
Behaviors e Datasources

View
Helpers e Elements

Controller
Components

CakePHP

Estrutura de Arquivos

CakePHP

Estrutura de Arquivos
config - configurao da app (banco, conf. ncleo, etc)
controllers - controles da app
locale - strings de internacionalizao
models - modelos da app
plugins - pacotes de plugins
tmp - local de arquivos temporrios
vendors - aplicativos de terceiros
views - views do sistema
webroot - raiz da aplicao

CakePHP

Estrutura de Arquivos
config - configurao da app (banco, conf. ncleo, etc)
controllers - controles da app
locale - strings de internacionalizao
models - modelos da app
plugins - pacotes de plugins
tmp - local de arquivos temporrios
vendors - aplicativos de terceiros
views - views do sistema
webroot - raiz da aplicao

Aplicao exemplo: Blog

O primeiro bolo
Aplicao de blog
Listar
Inserir
Editar
Deletar

O primeiro a gente

NUNCA
esquece ...

Aplicao exemplo: Blog

Conf. base no Cake


app/config/database.php.default

app/config/database.php

Aplicao exemplo: Blog

Criando o model
Criar tabela na database escolhida

Aplicao exemplo: Blog

Criando o model
app/models/post.php

Aplicao exemplo: Blog

Convenes
MODEL
Nome da tabela SEMPRE no plural (ex.: model post -> tabela posts)
Toda tabela deve possuir a chave primria id (auto-numrica ou com 36 caracteres)

CONTROLLER
Nome SEMPRE no plural (ex.: model post -> controller posts)
Nome do arquivo no padro <model no plural>_controller.php

Aplicao exemplo: Blog

Criando o controller
app/controllers/posts_controller.php

Aplicao exemplo: Blog

Criando uma views


app/views/posts/index.ctp - listagem dos posts

Aplicao exemplo: Blog

Criando uma views


app/views/posts/index.ctp - listagem dos posts

helper $html->link

Aplicao exemplo: Blog

Acessando a ao
http://localhost/posts

Aplicao exemplo: Blog

Acessando a ao
http://localhost/posts
host

Aplicao exemplo: Blog

Acessando a ao
controller

http://localhost/posts
host

Aplicao exemplo: Blog

Executando a ao

Aplicao exemplo: Blog

Adicionando aes
app/controllers/posts_controller.php

Aplicao exemplo: Blog

Adicionando aes
app/views/posts/view.ctp

Aplicao exemplo: Blog

Acessando a ao
http://localhost/posts/view/2

Aplicao exemplo: Blog

Acessando a ao
http://localhost/posts/view/2
host

Aplicao exemplo: Blog

Acessando a ao
controller

http://localhost/posts/view/2
host

Aplicao exemplo: Blog

Acessando a ao
controller

ao

http://localhost/posts/view/2
host

Aplicao exemplo: Blog

Acessando a ao
controller

ao

http://localhost/posts/view/2
host

ID

Aplicao exemplo: Blog

Adicionando aes

Aplicao exemplo: Blog

Modificando o layout
Layout
View

Elements

Aplicao exemplo: Blog

Modificando o layout
Layout
View

Elements

Aplicao exemplo: Blog

Modificando o layout
Layout
View

Elements

Aplicao exemplo: Blog

Modificando o layout
Layout
View

Elements

Aplicao exemplo: Blog

Modificando o layout

Aplicao exemplo: Blog

Modificando o layout

contedo da view

Aplicao exemplo: Blog

Modificando o layout
Antes

Depois

Aplicao exemplo: Blog

Adicionando um post
app/controllers/posts_controller.php

Aplicao exemplo: Blog

Adicionando um post
app/views/posts/add.ctp

Aplicao exemplo: Blog

Adicionando um post
app/views/posts/add.ctp
FormHelper

Aplicao exemplo: Blog

Adicionando um post
app/views/posts/index.ctp

Aplicao exemplo: Blog

Adicionando um post
app/views/posts/index.ctp

Aplicao exemplo: Blog

Adicionando um post

Aplicao exemplo: Blog

Validao de campos
app/models/post.php

Aplicao exemplo: Blog

Validao de campos
app/models/post.php
validao

Aplicao exemplo: Blog

Validao de campos

Aplicao exemplo: Blog

Validao de campos

Aplicao exemplo: Blog

Deletando um post
app/controllers/posts_controller.php

Aplicao exemplo: Blog

Deletando um post
app/views/posts/index.ctp

Aplicao exemplo: Blog

Deletando um post
app/views/posts/index.ctp

confirma a operao

Aplicao exemplo: Blog

Deletando um post

Aplicao exemplo: Blog

Editando um post
app/controllers/posts_controller.php

Aplicao exemplo: Blog

Editando um post
app/views/posts/edit.ctp

Aplicao exemplo: Blog

Editando um post
app/views/posts/edit.ctp

Aplicao exemplo: Blog

Editando um post
app/views/posts/index.ctp

Aplicao exemplo: Blog

Editando um post
app/views/posts/index.ctp

e tome helper

Aplicao exemplo: Blog

Editando um post

Extras

CRUD e Scaffolding
app/model/comment.php

app/model/comment.php

Extras

CRUD via Scaffolding


Vantagens

Desvantagens

Extras

CRUD via Scaffolding


Vantagens
timo para prototipar aplicaes

Desvantagens

Extras

CRUD via Scaffolding


Vantagens
timo para prototipar aplicaes
Pode ser usado numa app em produco

Desvantagens

Extras

CRUD via Scaffolding


Vantagens
timo para prototipar aplicaes
Pode ser usado numa app em produco
Mamo com aucar!!

Desvantagens

Extras

CRUD via Scaffolding


Vantagens
timo para prototipar aplicaes
Pode ser usado numa app em produco
Mamo com aucar!!

Desvantagens
No foi feito para ser flexvel

Extras

CRUD via Scaffolding


Vantagens
timo para prototipar aplicaes
Pode ser usado numa app em produco
Mamo com aucar!!

Desvantagens
No foi feito para ser flexvel
Baixa segurana (em seu estado default)

Extras

CRUD via Bake


$ cd ./cake/console
$ ./cake bake

Extras

CRUD via Bake


Vantagens

Desvantagens

Extras

CRUD via Bake


Vantagens
Cria esqueletos de models, views e controllers

Desvantagens

Extras

CRUD via Bake


Vantagens
Cria esqueletos de models, views e controllers
Ao contrrio do scaffold, cria arquivos reais na app

Desvantagens

Extras

CRUD via Bake


Vantagens
Cria esqueletos de models, views e controllers
Ao contrrio do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional

Desvantagens

Extras

CRUD via Bake


Vantagens
Cria esqueletos de models, views e controllers
Ao contrrio do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional
Permite configurar os modelos

Desvantagens

Extras

CRUD via Bake


Vantagens
Cria esqueletos de models, views e controllers
Ao contrrio do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional
Permite configurar os modelos

Desvantagens
Acostuma mal! :)

Fechando o buteco

Concluses

Fechando o buteco

Concluses
Fcil de codificar

Fechando o buteco

Concluses
Fcil de codificar
ORM e MVC aumentam a produtividade

Fechando o buteco

Concluses
Fcil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipao poderosas (bake/scaffold)

Fechando o buteco

Concluses
Fcil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipao poderosas (bake/scaffold)
Arquitetura consistente e flexvel

Fechando o buteco

Concluses
Fcil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipao poderosas (bake/scaffold)
Arquitetura consistente e flexvel
Helpers ajudam um bocado

Fechando o buteco

Concluses
Fcil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipao poderosas (bake/scaffold)
Arquitetura consistente e flexvel
Helpers ajudam um bocado
Codificao limpa, correta e sustentvel

Fechando o buteco

Concluses
Fcil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipao poderosas (bake/scaffold)
Arquitetura consistente e flexvel
Helpers ajudam um bocado
Codificao limpa, correta e sustentvel
Ei, isso no foi to ruim afinal.

Fechando o buteco

Asta La Vista Baby


Lo Hackin
e-mail e MSN

leohackin@gmail.com
Skype

leohackin
Blog

www.leohackin.com.br/blog

F u i ...

Você também pode gostar