Cakephp - Aprendendo a fazer o primeiro bolo
-
Upload
leo-hackin -
Category
Technology
-
view
11.677 -
download
0
description
Transcript of Cakephp - Aprendendo a fazer o primeiro bolo
CakePHPAprendendo a fazer o primeiro bolo
por Léo Hackin
segunda-feira, 8 de junho de 2009
Cardápio
Roteiro
O PHP ontem e hoje
Lógica x Apresentação
MVC
CakePHP
Aplicação exemplo: Blog
Conclusões
segunda-feira, 8 de junho de 2009
Mamma mia!
Pratos do dia
PHP à CarbonaraLógica misturada a apresentação
segunda-feira, 8 de junho de 2009
Eita nóis!
Pratos do dia
Sistema Ovo-CozidoRápido, fácil mas sempre fede no fim
segunda-feira, 8 de junho de 2009
Oxente!
Pratos do dia
Modelo-Visão-Controlador
Arrumadinho MVC
segunda-feira, 8 de junho de 2009
Agora sim...
Pratos do dia
E para sobremesa ... BOLO!
segunda-feira, 8 de junho de 2009
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 é diretor executivo da Giran Soluções e Ensino, onde trabalha como
consultor e especialista em soluções web.
segunda-feira, 8 de junho de 2009
Giran Soluções e Ensino• Consultoria e Treinamento especialidados
• Java
• Ruby on Rails
• PHP
• Desenvolvimento ágil
• Gerenciamento de projetos com SCRUM
• Profissionais altamente qualificados
• Participação ativa na comunidade
• http://www.giran.com.br
CSMCertified
Scrum MasterCurso e Certificação
oficiais
em b
reve
Informações e [email protected]
segunda-feira, 8 de junho de 2009
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
segunda-feira, 8 de junho de 2009
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 ...
segunda-feira, 8 de junho de 2009
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!
Adoção por grandes empresas
segunda-feira, 8 de junho de 2009
Lógica x Apresentação
PHP gerando HTML
segunda-feira, 8 de junho de 2009
Lógica x Apresentação
PHP espaguete
segunda-feira, 8 de junho de 2009
Lógica x Apresentação
Ops... Problemas!
X
DesignersProgramadores
segunda-feira, 8 de junho de 2009
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
segunda-feira, 8 de junho de 2009
Lógica x Apresentação
Ops... Problemas!
PHP à Carbonara
=
segunda-feira, 8 de junho de 2009
Apimentando a vida
MVC
segunda-feira, 8 de junho de 2009
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
segunda-feira, 8 de junho de 2009
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
segunda-feira, 8 de junho de 2009
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
segunda-feira, 8 de junho de 2009
MVC
Frameworks PHP
fonte: http://www.phpframeworks.com
segunda-feira, 8 de junho de 2009
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”.
segunda-feira, 8 de junho de 2009
CakePHP
Lances ManeirosCompatí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)
segunda-feira, 8 de junho de 2009
CakePHP
Momento Ui!
Ativa e crescente ?
NOFA!Eu quero! :D
segunda-feira, 8 de junho de 2009
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)
Jura ???
Opcional uma ova!!!!
segunda-feira, 8 de junho de 2009
CakePHP
Instalando
Descompactar o arquivo em seu servidor web
Baixar o CakePHP (http://cakephp.org)
segunda-feira, 8 de junho de 2009
CakePHP
InstalandoConfigurar o http.conf
segunda-feira, 8 de junho de 2009
CakePHP
InstalandoConfigurar o http.conf
segunda-feira, 8 de junho de 2009
CakePHP
InstalandoExecute e teste!
segunda-feira, 8 de junho de 2009
CakePHP
Estrutura Funcional
View
Model
Controller
Behaviors e Datasources
Helpers e Elements
Components
segunda-feira, 8 de junho de 2009
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
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
O primeiro bolo
O primeiro a gente
NUNCAesquece ...
Aplicação de blog
Listar
Inserir
Editar
Deletar
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Conf. base no Cakeapp/config/database.php.default
app/config/database.php
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Criando o modelCriar tabela na database escolhida
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Criando o modelapp/models/post.php
segunda-feira, 8 de junho de 2009
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
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Criando o controllerapp/controllers/posts_controller.php
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Criando uma viewsapp/views/posts/index.ctp - listagem dos posts
helper $html->link
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts
host
controller
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Executando a ação
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Adicionando açõesapp/controllers/posts_controller.php
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Adicionando açõesapp/views/posts/view.ctp
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Acessando a ação
http://localhost/posts/view/2
host
controller ação
ID
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Adicionando ações
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Modificando o layout
Layout
View
Elements
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Modificando o layout
conteúdo da view
/app/views/layouts/default.ctp
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Modificando o layoutAntes Depois
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Adicionando um postapp/controllers/posts_controller.php
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Adicionando um postapp/views/posts/add.ctp
FormHelper
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Adicionando um postapp/views/posts/index.ctp
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Adicionando um post
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Validação de camposapp/models/post.php
validação
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Validação de campos
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Deletando um postapp/controllers/posts_controller.php
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Deletando um postapp/views/posts/index.ctp
confirma a operação
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Deletando um post
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Editando um postapp/controllers/posts_controller.php
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Editando um postapp/views/posts/edit.ctp
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Editando um postapp/views/posts/index.ctp
e tome helper
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog
Editando um post
segunda-feira, 8 de junho de 2009
Extras
CRUD e Scaffoldingapp/model/comment.php
app/model/comment.php
segunda-feira, 8 de junho de 2009
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)
segunda-feira, 8 de junho de 2009
Extras
CRUD via Bake
$ cd ./cake/console$ ./cake bake
segunda-feira, 8 de junho de 2009
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
segunda-feira, 8 de junho de 2009
Pôlemicas
O CakePHP é lento
fonte: http://blog.cakephp-brasil.org
FatoEle é mais lento que o CI, seu
principal concorrente.
Porque escolhi ?
O CakePHP apresenta uma suite de ferramentas mais robusta e completa que os
outros, como ORM e suporte nativo a testes.
segunda-feira, 8 de junho de 2009
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. :D
segunda-feira, 8 de junho de 2009
Fechando o buteco
Perguntas ???
A resposta é OBVIA!!!
42Não suporto perguntas!
segunda-feira, 8 de junho de 2009
Fechando o buteco
Asta La Vista BabyLéo Hackin
e-mail e MSN
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