Escolar Documentos
Profissional Documentos
Cultura Documentos
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 à Carbonara
Lógica misturada a apresentação
Eita nóis!
Pratos do dia
Sistema Ovo-Cozido
Rápido, fácil mas sempre fede no fim
Oxente!
Pratos do dia
Arrumadinho MVC
Modelo-Visão-Controlador
Agora sim...
Pratos do dia
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.
O PHP ontem e hoje
O PHP ontem
O PHP ontem e hoje
O PHP ontem
O PHP ontem
POGramadores doidões
O PHP ontem e hoje
O PHP ontem
POGramadores doidões
Baixa remuneração
O PHP ontem e hoje
O PHP ontem
POGramadores doidões
Baixa remuneração
Consistência discutível
O PHP ontem e hoje
O PHP ontem
POGramadores doidões
Baixa remuneração
Consistência discutível
Falta de padrões de design
O PHP ontem e hoje
O PHP ontem
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
Agravantes
Falta de conhecimento teórico de programação
Agravantes
Falta de conhecimento teórico de programação
Agravantes
Falta de conhecimento teórico de programação
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
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
O PHP hoje
Maturidade para soluções corporativas
OO verdadeiro
O tempo voa!
N projetos ... FRAMEWORKS!
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
O que é MVC
Padrão de arquitetura de software
Os dados da aplicação
MVC
O que é MVC
Padrão de arquitetura de software
O que é MVC
Padrão de arquitetura de software
Características
MVC
Características
Base funcional para toda a aplicação
MVC
Características
Base funcional para toda a aplicação
Características
Base funcional para toda a aplicação
Consistência e produtividade
MVC
Características
Base funcional para toda a aplicação
Consistência e produtividade
Desenvolvimento em paralelo
MVC
Características
Base funcional para toda a aplicação
Consistência e produtividade
Desenvolvimento em paralelo
http://site/hello
MVC
http://site/hello
MVC
http://site/hello
MVC
Mysql, Postgres,
Oracle e muitos
outros
http://site/hello
MVC
Mysql, Postgres,
Oracle e muitos
outros
http://site/hello
MVC
http://site/hello
MVC
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 é CakePHP
Compatível com PHP 4 e 5
CakePHP
O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
CakePHP
O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
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 ...
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
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)
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
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
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!
Requisitos mínimos
Um computador =)
Instalando
Baixar o CakePHP (http://cakephp.org)
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 - 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
Aplicação de blog
Listar
Inserir
Editar
Deletar O primeiro a gente
NUNCA
esquece ...
Aplicação exemplo: Blog
app/config/database.php
Aplicação exemplo: Blog
Criando o model
Criar tabela na database escolhida
Aplicação exemplo: Blog
Criando o model
app/models/post.php
Aplicação exemplo: Blog
Convenções
MODEL
Nome da tabela SEMPRE no plural (ex.: model post -> tabela posts)
CONTROLLER
Nome SEMPRE no plural (ex.: model post -> controller posts)
Criando o controller
app/controllers/posts_controller.php
Aplicação exemplo: Blog
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
controller
http://localhost/posts
host
Aplicação exemplo: Blog
Executando a ação
Aplicação exemplo: Blog
Adicionando ações
app/controllers/posts_controller.php
Aplicação exemplo: Blog
Adicionando ações
app/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
controller
http://localhost/posts/view/2
host
Aplicação exemplo: Blog
Acessando a ação
controller ação
http://localhost/posts/view/2
host
Aplicação exemplo: Blog
Acessando a ação
controller ação
http://localhost/posts/view/2
host 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 layout
Antes Depois
Aplicação exemplo: Blog
Adicionando um post
app/controllers/posts_controller.php
Aplicação exemplo: Blog
Adicionando um post
app/views/posts/add.ctp
Aplicação exemplo: Blog
Adicionando um post
app/views/posts/add.ctp
FormHelper
Aplicação exemplo: Blog
Adicionando um post
app/views/posts/index.ctp
Aplicação exemplo: Blog
Adicionando um post
app/views/posts/index.ctp
Aplicação exemplo: Blog
Adicionando um post
Aplicação exemplo: Blog
Validação de campos
app/models/post.php
Aplicação exemplo: Blog
Validação de campos
app/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 post
app/controllers/posts_controller.php
Aplicação exemplo: Blog
Deletando um post
app/views/posts/index.ctp
Aplicação exemplo: Blog
Deletando um post
app/views/posts/index.ctp
confirma a operação
Aplicação exemplo: Blog
Deletando um post
Aplicação exemplo: Blog
Editando um post
app/controllers/posts_controller.php
Aplicação exemplo: Blog
Editando um post
app/views/posts/edit.ctp
Aplicação exemplo: Blog
Editando um post
app/views/posts/edit.ctp
Aplicação exemplo: Blog
Editando um post
app/views/posts/index.ctp
Aplicação exemplo: Blog
Editando um post
app/views/posts/index.ctp
e tome helper
Aplicação exemplo: Blog
Editando um post
Extras
CRUD e Scaffolding
app/model/comment.php
app/model/comment.php
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Não foi feito para ser flexível
Extras
Desvantagens
Não foi feito para ser flexível
Baixa segurança (em seu estado default)
Extras
$ cd ./cake/console
$ ./cake bake
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Acostuma mal! :)
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
Blog
www.leohackin.com.br/blog
F u i ...