Você está na página 1de 69

CakePHP

Aprendendo a fazer o primeiro bolo

por Lo Hackin
segunda-feira, 8 de junho de 2009

Roteiro
O PHP ontem e hoje Lgica x Apresentao MVC CakePHP Aplicao exemplo: Blog Concluses
segunda-feira, 8 de junho de 2009

Cardpio

Pratos do dia

Mamma mia!

PHP Carbonara
Lgica misturada a apresentao

segunda-feira, 8 de junho de 2009

Pratos do dia

Eita nis!

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

segunda-feira, 8 de junho de 2009

Pratos do dia

Oxente!

Arrumadinho MVC
Modelo-Viso-Controlador

segunda-feira, 8 de junho de 2009

Pratos do dia

Agora sim...

E para sobremesa ... BOLO!

segunda-feira, 8 de junho de 2009

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 diretor executivo da Giran Solues e Ensino, onde trabalha como consultor e especialista em solues web.

Sobre o cozinheiro

segunda-feira, 8 de junho de 2009

Gerenciamento de projetos com SCRUM Prossionais altamente qualicados Informaes e reservas Participao ativa na comunidade contato@giran.com.br http://www.giran.com.br
segunda-feira, 8 de junho de 2009

CSM Consultoria e Treinamento especialidados Certied Java Scrum Master Ruby on Rails Curso e Certicao PHP Desenvolvimento gil ociais
em

br ev e

Giran Solues e Ensino

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

O PHP ontem e hoje

segunda-feira, 8 de junho de 2009

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

segunda-feira, 8 de junho de 2009

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

O PHP ontem e Hoje

segunda-feira, 8 de junho de 2009

PHP gerando HTML

Lgica x Apresentao

segunda-feira, 8 de junho de 2009

PHP espaguete

Lgica x Apresentao

segunda-feira, 8 de junho de 2009

Ops... Problemas!

Lgica x Apresentao

Programadores

Designers

segunda-feira, 8 de junho de 2009

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

Lgica x Apresentao

segunda-feira, 8 de junho de 2009

Ops... Problemas!
= PHP Carbonara

Lgica x Apresentao

segunda-feira, 8 de junho de 2009

Apimentando a vida

MVC

segunda-feira, 8 de junho de 2009

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

MVC

Processa os eventos da aplicao

Os dados da aplicao

A apresentao da informao

segunda-feira, 8 de junho de 2009

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

MVC

segunda-feira, 8 de junho de 2009

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

MVC

O controller renderiza a view incluindo os dados de resposta da ao O controller devolve a resposta para o browser

http://site/hello

segunda-feira, 8 de junho de 2009

Frameworks PHP

MVC

fonte: http://www.phpframeworks.com

segunda-feira, 8 de junho de 2009

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 congurao, o CakePHP reduz custos de desenvolvimento e ajuda desenvolvedores a escrever menos cdigo.

CakePHP

segunda-feira, 8 de junho de 2009

Lances Maneiros
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
segunda-feira, 8 de junho de 2009

CakePHP

Momento Ui!

CakePHP

NOFA!
Eu quero! :D

Ativa e crescente ?

segunda-feira, 8 de junho de 2009

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

Jura ???

Opcional uma ova!!!!

segunda-feira, 8 de junho de 2009

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

CakePHP

segunda-feira, 8 de junho de 2009

Instalando
Congurar o http.conf

CakePHP

segunda-feira, 8 de junho de 2009

Instalando
Congurar o http.conf

CakePHP

segunda-feira, 8 de junho de 2009

Instalando
Execute e teste!

CakePHP

segunda-feira, 8 de junho de 2009

Estrutura Funcional
Model
Behaviors e Datasources

CakePHP

View
Helpers e Elements

Controller
Components

segunda-feira, 8 de junho de 2009

Estrutura de Arquivos
cong - congurao 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

segunda-feira, 8 de junho de 2009

O primeiro bolo
Aplicao de blog
Listar Inserir Editar Deletar
O primeiro a gente

Aplicao exemplo: Blog

NUNCA
esquece ...

segunda-feira, 8 de junho de 2009

Conf. base no Cake


app/cong/database.php.default

Aplicao exemplo: Blog

app/cong/database.php
segunda-feira, 8 de junho de 2009

Criando o model
Criar tabela na database escolhida

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Criando o model
app/models/post.php

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

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)

Aplicao exemplo: Blog

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

segunda-feira, 8 de junho de 2009

Criando o controller
app/controllers/posts_controller.php

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Criando uma views


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

Aplicao exemplo: Blog

helper $html->link
segunda-feira, 8 de junho de 2009

Acessando a ao
controller

Aplicao exemplo: Blog

http://localhost/posts
host

segunda-feira, 8 de junho de 2009

Executando a ao

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Adicionando aes
app/controllers/posts_controller.php

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Adicionando aes
app/views/posts/view.ctp

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Acessando a ao
controller ao

Aplicao exemplo: Blog

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

segunda-feira, 8 de junho de 2009

Adicionando aes

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Modicando o layout
Layout View

Aplicao exemplo: Blog

Elements

segunda-feira, 8 de junho de 2009

Modicando o layout

Aplicao exemplo: Blog

/app/views/layouts/default.ctp

contedo da view

segunda-feira, 8 de junho de 2009

Modicando o layout
Antes Depois

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Adicionando um post
app/controllers/posts_controller.php

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

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

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

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

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Adicionando um post

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Validao de campos
app/models/post.php validao

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Validao de campos

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Deletando um post
app/controllers/posts_controller.php

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

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

Aplicao exemplo: Blog

conrma a operao

segunda-feira, 8 de junho de 2009

Deletando um post

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

Editando um post
app/controllers/posts_controller.php

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

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

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

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

Aplicao exemplo: Blog

e tome helper

segunda-feira, 8 de junho de 2009

Editando um post

Aplicao exemplo: Blog

segunda-feira, 8 de junho de 2009

CRUD e Scaffolding
app/model/comment.php

Extras

app/model/comment.php

segunda-feira, 8 de junho de 2009

CRUD via Scaffolding


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

Extras

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

segunda-feira, 8 de junho de 2009

CRUD via Bake


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

Extras

segunda-feira, 8 de junho de 2009

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 congurar os modelos

Extras

Desvantagens
Acostuma mal! :)

segunda-feira, 8 de junho de 2009

O CakePHP lento
Fato
Ele mais lento que o CI, seu principal concorrente.

Plemicas

Porque escolhi ?
O CakePHP apresenta uma suite de ferramentas mais robusta e completa que os outros, como ORM e suporte nativo a testes.

fonte: http://blog.cakephp-brasil.org

segunda-feira, 8 de junho de 2009

Concluses
Fcil de codicar ORM e MVC aumentam a produtividade Ferramentas de prototipao poderosas (bake/scaffold) Arquitetura consistente e exvel Helpers ajudam um bocado Codicao limpa, correta e sustentvel Ei, isso no foi to ruim anal. :D

Fechando o buteco

segunda-feira, 8 de junho de 2009

Perguntas ???
A resposta OBVIA!!!

Fechando o buteco

42

No suporto perguntas!

segunda-feira, 8 de junho de 2009

Asta La Vista Baby


Lo Hackin
e-mail e MSN

Fechando o buteco

leohackin@gmail.com
Skype

leohackin
Blog

www.leohackin.com.br/blog

segunda-feira, 8 de junho de 2009

F u i ...

segunda-feira, 8 de junho de 2009

Você também pode gostar