CakePHPAprendendo a fazer o primeiro bolo
por Léo Hackin
Cardápio
Roteiro
O PHP ontem e hoje
Lógica x Apresentação
MVC
CakePHP
Aplicação exemplo: Blog
Conclusões
Mamma mia!
Pratos do dia
PHP à CarbonaraLógica misturada a apresentação
Eita nóis!
Pratos do dia
Sistema Ovo-CozidoRápido, fácil mas sempre fede no fim
Oxente!
Pratos do dia
Modelo-Visão-Controlador
Arrumadinho MVC
Agora sim...
Pratos do dia
E para sobremesa ... BOLO!
Sobre o cozinheiro
Léo HackinLéo Hackin é desenvolvedor desde 96 e já
passou por algumas das principais empresas de internet capixabas, desenvolvendo
soluções para internet, dispositivos móveis e desktop. Apaixonado por PHP a 7 anos, atualmente trabalha como analista de
soluções JavaEE para attPS Tech (São Paulo) e como Consultor em soluções 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 doidões
O PHP ontem e hoje
O PHP ontem
Linguagem para apps simples
POGramadores doidões
Baixa remuneração
O PHP ontem e hoje
O PHP ontem
Linguagem para apps simples
POGramadores doidões
Baixa remuneração
Consistência discutível
O PHP ontem e hoje
O PHP ontem
Linguagem para apps simples
POGramadores doidões
Baixa remuneração
Consistência discutível
Falta de padrões de design
O PHP ontem e hoje
O PHP ontem
Linguagem para apps simples
POGramadores doidões
Baixa remuneração
Consistência discutível
Falta de padrões de design
O PHP ontem e Hoje
Agravantes
O PHP ontem e Hoje
Agravantes
Falta de conhecimento teórico de programação
O PHP ontem e Hoje
Agravantes
Falta de conhecimento teórico de programação
Rápido == feito nas coxas
O PHP ontem e Hoje
Agravantes
Falta de conhecimento teórico de programação
Rápido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
O PHP ontem e Hoje
Agravantes
Falta de conhecimento teórico de programação
Rápido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
Script Kiddies, sobrinhos e “amigos que mexem com informática”
O PHP ontem e Hoje
Agravantes
Falta de conhecimento teórico de programação
Rápido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
Script Kiddies, sobrinhos e “amigos que mexem com informática”
Herança estrutural: funções redundantes, includes, etc ...
O PHP ontem e Hoje
O PHP hoje
O PHP ontem e Hoje
O PHP hoje
Maturidade para soluções corporativas
O PHP ontem e Hoje
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
O PHP ontem e Hoje
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
Remuneração “de gente”
O PHP ontem e Hoje
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
Remuneração “de gente”
Montes e montes de documentação
O PHP ontem e Hoje
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
Remuneração “de gente”
Montes e montes de documentação
N projetos ... FRAMEWORKS!
O PHP ontem e Hoje
O PHP hoje
O tempo passa!
O tempo voa!
Maturidade para soluções corporativas
OO verdadeiro
Remuneração “de gente”
Montes e montes de documentação
N projetos ... FRAMEWORKS!
Lógica x Apresentação
PHP gerando HTML
Lógica x Apresentação
PHP espaguete
Lógica x Apresentação
PHP espaguete
Lógica x Apresentação
Ops... Problemas!
Codificação e manutenção custosa
Quebra pau com designers
Redundância de métodos, funções, includes ...
Despadronização é ruim!!!
Segmentação da lógica
Lógica x Apresentação
Ops... Problemas!
PHP à Carbonara
Lógica x Apresentação
Ops... Problemas!
PHP à Carbonara
=
MVC
O que é MVC
MVC
O que é MVC
Padrão de arquitetura de software
MVC
O que é MVC
Padrão de arquitetura de software
Separação da aplicação em três partes:
MVC
O que é MVC
Padrão de arquitetura de software
Separação da aplicação em três partes:
Os dados da aplicação
MVC
O que é MVC
Padrão de arquitetura de software
Separação da aplicação em três partes:
Os dados da aplicação A apresentação da informação
MVC
O que é MVC
Padrão de arquitetura de software
Separação da aplicação em três partes:
Os dados da aplicação A apresentação da informação
Processa os eventos da aplicação
MVC
Características
MVC
Características
Base funcional para toda a aplicação
MVC
Características
Base funcional para toda a aplicação
Conjunto de ferramentas, classes ...
MVC
Características
Base funcional para toda a aplicação
Conjunto de ferramentas, classes ...
Consistência e produtividade
MVC
Características
Base funcional para toda a aplicação
Conjunto de ferramentas, classes ...
Consistência e produtividade
Desenvolvimento em paralelo
MVC
Características
Base funcional para toda a aplicação
Conjunto de ferramentas, classes ...
Consistência e produtividade
Desenvolvimento em paralelo
Manutenção e escalabilidade menos custosa
MVC
Como funciona, tio ?
MVC
Como funciona, tio ?Browser envia requisição à aplicação
MVC
Como funciona, tio ?Browser envia requisição à aplicação
http://site/hello
MVC
Como funciona, tio ?Browser envia requisição à aplicação
O controller processa a ação
http://site/hello
MVC
Como funciona, tio ?Browser envia requisição à aplicação
O controller processa a ação
O controller processa a requisição e acessa a lógica de negócio (model) da aplicação
http://site/hello
MVC
Como funciona, tio ?
Mysql, Postgres, Oracle e muitos
outros
Browser envia requisição à aplicação
O controller processa a ação
O controller processa a requisição e acessa a lógica de negócio (model) da aplicação
O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller
http://site/hello
MVC
Como funciona, tio ?
Mysql, Postgres, Oracle e muitos
outros
Browser envia requisição à aplicação
O controller processa a ação
O controller processa a requisição e acessa a lógica de negócio (model) da aplicação
O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller
O controller então seleciona a view correspondente a ação
http://site/hello
MVC
Como funciona, tio ?
Mysql, Postgres, Oracle e muitos
outros
Browser envia requisição à aplicação
O controller processa a ação
O controller processa a requisição e acessa a lógica de negócio (model) da aplicação
O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller
O controller então seleciona a view correspondente a ação
O controller renderiza a view incluindo os dados de resposta da ação
http://site/hello
MVC
Como funciona, tio ?
Mysql, Postgres, Oracle e muitos
outros
Browser envia requisição à aplicação
O controller processa a ação
O controller processa a requisição e acessa a lógica de negócio (model) da aplicação
O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller
O controller então seleciona a view correspondente a ação
O controller renderiza a view incluindo os dados de resposta da ação
O controller devolve a resposta para o browser
http://site/hello
MVC
Frameworks PHP
CakePHP
O que é CakePHP
CakePHP é um framework de desenvolvimento rápido para PHP que provê uma arquitetura
extensível para desenvolvimento, manutenção e implantação de aplicacões. Usando padrões de projeto como MVC e ORM com “convenção ao invés de configuração”, o CakePHP reduz
custos de desenvolvimento e ajuda desenvolvedores a “escrever menos código”.
CakePHP
O que é CakePHP
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
Arquitetura MVC
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CRUD (Create-Read-Update-Delete) integrado
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
Internacionalização
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
Internacionalização
Comunidade ativa e crescente
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
CakePHP
O que é CakePHPCompatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
Internacionalização
Comunidade ativa e crescente
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM) Ativa e crescente ?
NOFA!Eu quero!
CakePHP
Requisitos mínimos
Servidor HTTP (Apache 2)
PHP4 ou PHP5
Base de dados (opcional)
MySQL, Postgres, SQL Server, Oracle, SQLite, ODBC, ADOdb, Firebird DB2
Um computador =)
Café, chá ou suco (opcional)
CakePHP
Instalando
Descompactar o arquivo em seu servidor web
Baixar o CakePHP (http://cakephp.org)
CakePHP
InstalandoConfigurar o http.conf
CakePHP
InstalandoConfigurar o http.conf
CakePHP
InstalandoConfigurar o http.conf
CakePHP
InstalandoConfigurar o http.conf
CakePHP
InstalandoConfigurar o http.conf
CakePHP
InstalandoExecute e teste!
CakePHP
Estrutura Funcional
CakePHP
Estrutura Funcional
CakePHP
Estrutura Funcional
View
Model
Controller
CakePHP
Estrutura Funcional
View
Model
Controller
Behaviors e Datasources
Helpers e Elements
Components
CakePHP
Estrutura de Arquivos
CakePHP
Estrutura de Arquivos
config - configuração da app (banco, conf. núcleo, etc)
controllers - controles da app
locale - strings de internacionalização
models - modelos da app
plugins - pacotes de plugins
tmp - local de arquivos temporários
vendors - aplicativos de terceiros
views - views do sistema
webroot - raiz da aplicação
CakePHP
Estrutura de Arquivos
config - configuração da app (banco, conf. núcleo, etc)
controllers - controles da app
locale - strings de internacionalização
models - modelos da app
plugins - pacotes de plugins
tmp - local de arquivos temporários
vendors - aplicativos de terceiros
views - views do sistema
webroot - raiz da aplicação
Aplicação exemplo: Blog
O primeiro bolo
O primeiro a gente
NUNCAesquece ...
Aplicação de blog
Listar
Inserir
Editar
Deletar
Aplicação exemplo: Blog
Conf. base no Cakeapp/config/database.php.default
app/config/database.php
Aplicação exemplo: Blog
Criando o modelCriar tabela na database escolhida
Aplicação exemplo: Blog
Criando o modelapp/models/post.php
Aplicação exemplo: Blog
ConvençõesMODEL
Nome da tabela SEMPRE no plural (ex.: model post -> tabela posts)
Toda tabela deve possuir a chave primária id (auto-numérica ou com 36 caracteres)
CONTROLLERNome SEMPRE no plural (ex.: model post -> controller posts)
Nome do arquivo no padrão <model no plural>_controller.php
Aplicação exemplo: Blog
Criando o controllerapp/controllers/posts_controller.php
Aplicação exemplo: Blog
Criando uma viewsapp/views/posts/index.ctp - listagem dos posts
Aplicação exemplo: Blog
Criando uma viewsapp/views/posts/index.ctp - listagem dos posts
helper $html->link
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts
host
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts
host
controller
Aplicação exemplo: Blog
Executando a ação
Aplicação exemplo: Blog
Adicionando açõesapp/controllers/posts_controller.php
Aplicação exemplo: Blog
Adicionando açõesapp/views/posts/view.ctp
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts/view/2
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts/view/2
host
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts/view/2
host
controller
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts/view/2
host
controller ação
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts/view/2
host
controller ação
ID
Aplicação exemplo: Blog
Adicionando ações
Aplicação exemplo: Blog
Modificando o layout
Layout
View
Elements
Aplicação exemplo: Blog
Modificando o layout
Layout
View
Elements
Aplicação exemplo: Blog
Modificando o layout
Layout
View
Elements
Aplicação exemplo: Blog
Modificando o layout
Layout
View
Elements
Aplicação exemplo: Blog
Modificando o layout
Aplicação exemplo: Blog
Modificando o layout
conteúdo da view
Aplicação exemplo: Blog
Modificando o layoutAntes Depois
Aplicação exemplo: Blog
Adicionando um postapp/controllers/posts_controller.php
Aplicação exemplo: Blog
Adicionando um postapp/views/posts/add.ctp
Aplicação exemplo: Blog
Adicionando um postapp/views/posts/add.ctp
FormHelper
Aplicação exemplo: Blog
Adicionando um postapp/views/posts/index.ctp
Aplicação exemplo: Blog
Adicionando um postapp/views/posts/index.ctp
Aplicação exemplo: Blog
Adicionando um post
Aplicação exemplo: Blog
Validação de camposapp/models/post.php
Aplicação exemplo: Blog
Validação de camposapp/models/post.php
validação
Aplicação exemplo: Blog
Validação de campos
Aplicação exemplo: Blog
Validação de campos
Aplicação exemplo: Blog
Deletando um postapp/controllers/posts_controller.php
Aplicação exemplo: Blog
Deletando um postapp/views/posts/index.ctp
Aplicação exemplo: Blog
Deletando um postapp/views/posts/index.ctp
confirma a operação
Aplicação exemplo: Blog
Deletando um post
Aplicação exemplo: Blog
Editando um postapp/controllers/posts_controller.php
Aplicação exemplo: Blog
Editando um postapp/views/posts/edit.ctp
Aplicação exemplo: Blog
Editando um postapp/views/posts/edit.ctp
Aplicação exemplo: Blog
Editando um postapp/views/posts/index.ctp
Aplicação exemplo: Blog
Editando um postapp/views/posts/index.ctp
e tome helper
Aplicação exemplo: Blog
Editando um post
Extras
CRUD e Scaffoldingapp/model/comment.php
app/model/comment.php
Extras
CRUD via ScaffoldingVantagens
Desvantagens
Extras
CRUD via Scaffolding
Ótimo para prototipar aplicações
Vantagens
Desvantagens
Extras
CRUD via Scaffolding
Ótimo para prototipar aplicações
Pode ser usado numa app em producão
Vantagens
Desvantagens
Extras
CRUD via Scaffolding
Ótimo para prototipar aplicações
Pode ser usado numa app em producão
Vantagens
Mamão com açucar!!
Desvantagens
Extras
CRUD via Scaffolding
Ótimo para prototipar aplicações
Pode ser usado numa app em producão
Vantagens
Mamão com açucar!!
DesvantagensNão foi feito para ser flexível
Extras
CRUD via Scaffolding
Ótimo para prototipar aplicações
Pode ser usado numa app em producão
Vantagens
Mamão com açucar!!
DesvantagensNão foi feito para ser flexível
Baixa segurança (em seu estado default)
Extras
CRUD via Bake
$ cd ./cake/console$ ./cake bake
Extras
CRUD via BakeVantagens
Desvantagens
Extras
CRUD via Bake
Cria “esqueletos” de models, views e controllers
Vantagens
Desvantagens
Extras
CRUD via Bake
Cria “esqueletos” de models, views e controllers
Ao contrário do scaffold, cria arquivos reais na app
Vantagens
Desvantagens
Extras
CRUD via Bake
Cria “esqueletos” de models, views e controllers
Ao contrário do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional
Vantagens
Desvantagens
Extras
CRUD via Bake
Cria “esqueletos” de models, views e controllers
Ao contrário do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional
Vantagens
Desvantagens
Permite configurar os modelos
Extras
CRUD via Bake
Cria “esqueletos” de models, views e controllers
Ao contrário do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional
Acostuma mal! :)
Vantagens
Desvantagens
Permite configurar os modelos
Fechando o buteco
Conclusões
Fechando o buteco
Conclusões
Fácil de codificar
Fechando o buteco
Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Fechando o buteco
Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Fechando o buteco
Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Arquitetura consistente e flexível
Fechando o buteco
Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Arquitetura consistente e flexível
Helpers ajudam um bocado
Fechando o buteco
Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Arquitetura consistente e flexível
Helpers ajudam um bocado
Codificação limpa, correta e sustentável
Fechando o buteco
Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Arquitetura consistente e flexível
Helpers ajudam um bocado
Codificação limpa, correta e sustentável
Ei, isso não foi tão ruim afinal.
Fechando o buteco
Asta La Vista BabyLéo Hackin
e-mail e MSN
Skype
leohackin
Blog
www.leohackin.com.br/blog
F u i ...
Top Related