7. Sobre o cozinheiro
Léo Hackin
Lé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.
9. O PHP ontem e hoje
O PHP ontem
Linguagem para apps simples
10. O PHP ontem e hoje
O PHP ontem
Linguagem para apps simples
POGramadores doidões
11. O PHP ontem e hoje
O PHP ontem
Linguagem para apps simples
POGramadores doidões
Baixa remuneração
12. O PHP ontem e hoje
O PHP ontem
Linguagem para apps simples
POGramadores doidões
Baixa remuneração
Consistência discutível
13. 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
14. 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
16. O PHP ontem e Hoje
Agravantes
Falta de conhecimento teórico de programação
17. O PHP ontem e Hoje
Agravantes
Falta de conhecimento teórico de programação
Rápido == feito nas coxas
18. 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)
19. 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”
20. 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 ...
22. O PHP ontem e Hoje
O PHP hoje
Maturidade para soluções corporativas
23. O PHP ontem e Hoje
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
24. O PHP ontem e Hoje
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
Remuneração “de gente”
25. 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
26. 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!
27. 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 tempo passa!
O tempo voa!
N projetos ... FRAMEWORKS!
31. 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
35. MVC
O que é MVC
Padrão de arquitetura de software
36. MVC
O que é MVC
Padrão de arquitetura de software
Separação da aplicação em três partes:
37. MVC
O que é MVC
Padrão de arquitetura de software
Separação da aplicação em três partes:
Os dados da aplicação
38. 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
39. MVC
O que é MVC
Padrão de arquitetura de software
Separação da aplicação em três partes:
Processa os eventos da aplicação
Os dados da aplicação A apresentação da informação
41. MVC
Características
Base funcional para toda a aplicação
42. MVC
Características
Base funcional para toda a aplicação
Conjunto de ferramentas, classes ...
43. MVC
Características
Base funcional para toda a aplicação
Conjunto de ferramentas, classes ...
Consistência e produtividade
44. MVC
Características
Base funcional para toda a aplicação
Conjunto de ferramentas, classes ...
Consistência e produtividade
Desenvolvimento em paralelo
45. 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
48. MVC
Como funciona, tio ?
Browser envia requisição à aplicação
http://site/hello
49. MVC
Como funciona, tio ?
Browser envia requisição à aplicação
O controller processa a ação
http://site/hello
50. 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
51. 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
O model acessa a base de dados
da aplicação para executar a ação
requisitada pelo controller
Mysql, Postgres,
Oracle e muitos
outros
http://site/hello
52. 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
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
Mysql, Postgres,
Oracle e muitos
outros
http://site/hello
53. 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
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
Mysql, Postgres, incluindo os dados de resposta
Oracle e muitos da ação
outros
http://site/hello
54. 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
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
Mysql, Postgres, incluindo os dados de resposta
Oracle e muitos da ação
outros
O controller devolve a resposta
para o browser
http://site/hello
56. 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”.
58. CakePHP
O que é CakePHP
Compatível com PHP 4 e 5
59. CakePHP
O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
60. CakePHP
O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
61. CakePHP
O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
62. CakePHP
O que é CakePHP
Compatí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
63. CakePHP
O que é CakePHP
Compatí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)
64. CakePHP
O que é CakePHP
Compatí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)
Internacionalização
65. CakePHP
O que é CakePHP
Compatí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)
Internacionalização
Comunidade ativa e crescente
66. CakePHP
O que é CakePHP
Compatí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) Ativa e crescente ?
NOFA!
Internacionalização Eu quero!
Comunidade ativa e crescente
67. CakePHP
Requisitos mínimos
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)
68. CakePHP
Instalando
Baixar o CakePHP (http://cakephp.org)
Descompactar o arquivo em seu servidor web
80. 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
81. 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
82. Aplicação exemplo: Blog
O primeiro bolo
Aplicação de blog
Listar
Inserir
Editar
Deletar O primeiro a gente
NUNCA
esquece ...
83. Aplicação exemplo: Blog
Conf. base no Cake
app/config/database.php.default
app/config/database.php
86. Aplicação exemplo: Blog
Convenções
MODEL
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)
CONTROLLER
Nome SEMPRE no plural (ex.: model post -> controller posts)
Nome do arquivo no padrão <model no plural>_controller.php
129. Extras
CRUD e Scaffolding
app/model/comment.php
app/model/comment.php
130. Extras
CRUD via Scaffolding
Vantagens
Desvantagens
131. Extras
CRUD via Scaffolding
Vantagens
Ótimo para prototipar aplicações
Desvantagens
132. Extras
CRUD via Scaffolding
Vantagens
Ótimo para prototipar aplicações
Pode ser usado numa app em producão
Desvantagens
133. Extras
CRUD via Scaffolding
Vantagens
Ótimo para prototipar aplicações
Pode ser usado numa app em producão
Mamão com açucar!!
Desvantagens
134. Extras
CRUD via Scaffolding
Vantagens
Ótimo para prototipar aplicações
Pode ser usado numa app em producão
Mamão com açucar!!
Desvantagens
Não foi feito para ser flexível
135. Extras
CRUD via Scaffolding
Vantagens
Ótimo para prototipar aplicações
Pode ser usado numa app em producão
Mamão com açucar!!
Desvantagens
Não foi feito para ser flexível
Baixa segurança (em seu estado default)
136. Extras
CRUD via Bake
$ cd ./cake/console
$ ./cake bake
138. Extras
CRUD via Bake
Vantagens
Cria “esqueletos” de models, views e controllers
Desvantagens
139. Extras
CRUD via Bake
Vantagens
Cria “esqueletos” de models, views e controllers
Ao contrário do scaffold, cria arquivos reais na app
Desvantagens
140. Extras
CRUD via Bake
Vantagens
Cria “esqueletos” de models, views e controllers
Ao contrário do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional
Desvantagens
141. Extras
CRUD via Bake
Vantagens
Cria “esqueletos” de models, views e controllers
Ao contrário do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional
Permite configurar os modelos
Desvantagens
142. Extras
CRUD via Bake
Vantagens
Cria “esqueletos” de models, views e controllers
Ao contrário do scaffold, cria arquivos reais na app
Extremamente poderoso e funcional
Permite configurar os modelos
Desvantagens
Acostuma mal! :)
145. Fechando o buteco
Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
146. Fechando o buteco
Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
147. 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
148. 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
149. 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
150. 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.
151. Fechando o buteco
Asta La Vista Baby
Léo Hackin
e-mail e MSN
leohackin@gmail.com
Skype
leohackin
Blog
www.leohackin.com.br/blog