Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
O PHP ontem
Linguagem para apps simples
O PHP ontem
Linguagem para apps simples
POGramadores doides
O PHP ontem
Linguagem para apps simples
POGramadores doides
Baixa remunerao
O PHP ontem
Linguagem para apps simples
POGramadores doides
Baixa remunerao
Consistncia discutvel
O PHP ontem
Linguagem para apps simples
POGramadores doides
Baixa remunerao
Consistncia discutvel
Falta de padres de design
O PHP ontem
Linguagem para apps simples
POGramadores doides
Baixa remunerao
Consistncia discutvel
Falta de padres de design
Agravantes
Agravantes
Falta de conhecimento terico de programao
Agravantes
Falta de conhecimento terico de programao
Rpido == feito nas coxas
Agravantes
Falta de conhecimento terico de programao
Rpido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
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
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 hoje
O PHP hoje
Maturidade para solues corporativas
O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
Remunerao de gente
O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
Remunerao de gente
Montes e montes de documentao
O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
Remunerao de gente
Montes e montes de documentao
N projetos ... FRAMEWORKS!
O PHP hoje
Maturidade para solues corporativas
OO verdadeiro
Remunerao de gente
Montes e montes de documentao
O tempo passa!
O tempo
voa!
Lgica x Apresentao
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:
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
MVC
MVC
http://site/hello
MVC
http://site/hello
MVC
http://site/hello
MVC
Mysql, Postgres,
Oracle e muitos
outros
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
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
O primeiro bolo
Aplicao de blog
Listar
Inserir
Editar
Deletar
O primeiro a gente
NUNCA
esquece ...
app/config/database.php
Criando o model
Criar tabela na database escolhida
Criando o model
app/models/post.php
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
Criando o controller
app/controllers/posts_controller.php
helper $html->link
Acessando a ao
http://localhost/posts
Acessando a ao
http://localhost/posts
host
Acessando a ao
controller
http://localhost/posts
host
Executando a ao
Adicionando aes
app/controllers/posts_controller.php
Adicionando aes
app/views/posts/view.ctp
Acessando a ao
http://localhost/posts/view/2
Acessando a ao
http://localhost/posts/view/2
host
Acessando a ao
controller
http://localhost/posts/view/2
host
Acessando a ao
controller
ao
http://localhost/posts/view/2
host
Acessando a ao
controller
ao
http://localhost/posts/view/2
host
ID
Adicionando aes
Modificando o layout
Layout
View
Elements
Modificando o layout
Layout
View
Elements
Modificando o layout
Layout
View
Elements
Modificando o layout
Layout
View
Elements
Modificando o layout
Modificando o layout
contedo da view
Modificando o layout
Antes
Depois
Adicionando um post
app/controllers/posts_controller.php
Adicionando um post
app/views/posts/add.ctp
Adicionando um post
app/views/posts/add.ctp
FormHelper
Adicionando um post
app/views/posts/index.ctp
Adicionando um post
app/views/posts/index.ctp
Adicionando um post
Validao de campos
app/models/post.php
Validao de campos
app/models/post.php
validao
Validao de campos
Validao de campos
Deletando um post
app/controllers/posts_controller.php
Deletando um post
app/views/posts/index.ctp
Deletando um post
app/views/posts/index.ctp
confirma a operao
Deletando um post
Editando um post
app/controllers/posts_controller.php
Editando um post
app/views/posts/edit.ctp
Editando um post
app/views/posts/edit.ctp
Editando um post
app/views/posts/index.ctp
Editando um post
app/views/posts/index.ctp
e tome helper
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
No foi feito para ser flexvel
Extras
Desvantagens
No foi feito para ser flexvel
Baixa segurana (em seu estado default)
Extras
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Extras
Desvantagens
Extras
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
leohackin@gmail.com
Skype
leohackin
Blog
www.leohackin.com.br/blog
F u i ...