Cakephp - Aprendendo a fazer o primeiro bolo

69
CakePHP Aprendendo a fazer o primeiro bolo por Léo Hackin segunda-feira, 8 de junho de 2009

description

Palestra ministrada no 1º Workshop PHP-ES pelo palestrante Léo Hackin (www.leohackin.com.br).

Transcript of Cakephp - Aprendendo a fazer o primeiro bolo

Page 1: Cakephp - Aprendendo a fazer o primeiro bolo

CakePHPAprendendo a fazer o primeiro bolo

por Léo Hackin

segunda-feira, 8 de junho de 2009

Page 2: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 3: Cakephp - Aprendendo a fazer o primeiro bolo

Mamma mia!

Pratos do dia

PHP à CarbonaraLógica misturada a apresentação

segunda-feira, 8 de junho de 2009

Page 4: Cakephp - Aprendendo a fazer o primeiro bolo

Eita nóis!

Pratos do dia

Sistema Ovo-CozidoRápido, fácil mas sempre fede no fim

segunda-feira, 8 de junho de 2009

Page 5: Cakephp - Aprendendo a fazer o primeiro bolo

Oxente!

Pratos do dia

Modelo-Visão-Controlador

Arrumadinho MVC

segunda-feira, 8 de junho de 2009

Page 6: Cakephp - Aprendendo a fazer o primeiro bolo

Agora sim...

Pratos do dia

E para sobremesa ... BOLO!

segunda-feira, 8 de junho de 2009

Page 7: Cakephp - Aprendendo a fazer o primeiro 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 é 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

Page 8: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 9: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 10: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 11: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 12: Cakephp - Aprendendo a fazer o primeiro bolo

Lógica x Apresentação

PHP gerando HTML

segunda-feira, 8 de junho de 2009

Page 13: Cakephp - Aprendendo a fazer o primeiro bolo

Lógica x Apresentação

PHP espaguete

segunda-feira, 8 de junho de 2009

Page 14: Cakephp - Aprendendo a fazer o primeiro bolo

Lógica x Apresentação

Ops... Problemas!

X

DesignersProgramadores

segunda-feira, 8 de junho de 2009

Page 15: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 16: Cakephp - Aprendendo a fazer o primeiro bolo

Lógica x Apresentação

Ops... Problemas!

PHP à Carbonara

=

segunda-feira, 8 de junho de 2009

Page 17: Cakephp - Aprendendo a fazer o primeiro bolo

Apimentando a vida

MVC

segunda-feira, 8 de junho de 2009

Page 18: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 19: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 20: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 21: Cakephp - Aprendendo a fazer o primeiro bolo

MVC

Frameworks PHP

fonte: http://www.phpframeworks.com

segunda-feira, 8 de junho de 2009

Page 22: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 23: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 24: Cakephp - Aprendendo a fazer o primeiro bolo

CakePHP

Momento Ui!

Ativa e crescente ?

NOFA!Eu quero! :D

segunda-feira, 8 de junho de 2009

Page 25: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 26: Cakephp - Aprendendo a fazer o primeiro bolo

CakePHP

Instalando

Descompactar o arquivo em seu servidor web

Baixar o CakePHP (http://cakephp.org)

segunda-feira, 8 de junho de 2009

Page 27: Cakephp - Aprendendo a fazer o primeiro bolo

CakePHP

InstalandoConfigurar o http.conf

segunda-feira, 8 de junho de 2009

Page 28: Cakephp - Aprendendo a fazer o primeiro bolo

CakePHP

InstalandoConfigurar o http.conf

segunda-feira, 8 de junho de 2009

Page 29: Cakephp - Aprendendo a fazer o primeiro bolo

CakePHP

InstalandoExecute e teste!

segunda-feira, 8 de junho de 2009

Page 30: Cakephp - Aprendendo a fazer o primeiro bolo

CakePHP

Estrutura Funcional

View

Model

Controller

Behaviors e Datasources

Helpers e Elements

Components

segunda-feira, 8 de junho de 2009

Page 31: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 32: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 33: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Conf. base no Cakeapp/config/database.php.default

app/config/database.php

segunda-feira, 8 de junho de 2009

Page 34: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Criando o modelCriar tabela na database escolhida

segunda-feira, 8 de junho de 2009

Page 35: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Criando o modelapp/models/post.php

segunda-feira, 8 de junho de 2009

Page 36: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 37: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Criando o controllerapp/controllers/posts_controller.php

segunda-feira, 8 de junho de 2009

Page 38: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Criando uma viewsapp/views/posts/index.ctp - listagem dos posts

helper $html->link

segunda-feira, 8 de junho de 2009

Page 39: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Acessando a ação

http://localhost/posts

host

controller

segunda-feira, 8 de junho de 2009

Page 40: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Executando a ação

segunda-feira, 8 de junho de 2009

Page 41: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Adicionando açõesapp/controllers/posts_controller.php

segunda-feira, 8 de junho de 2009

Page 42: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Adicionando açõesapp/views/posts/view.ctp

segunda-feira, 8 de junho de 2009

Page 44: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Adicionando ações

segunda-feira, 8 de junho de 2009

Page 45: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Modificando o layout

Layout

View

Elements

segunda-feira, 8 de junho de 2009

Page 46: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Modificando o layout

conteúdo da view

/app/views/layouts/default.ctp

segunda-feira, 8 de junho de 2009

Page 47: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Modificando o layoutAntes Depois

segunda-feira, 8 de junho de 2009

Page 48: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Adicionando um postapp/controllers/posts_controller.php

segunda-feira, 8 de junho de 2009

Page 49: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/add.ctp

FormHelper

segunda-feira, 8 de junho de 2009

Page 50: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/index.ctp

segunda-feira, 8 de junho de 2009

Page 51: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Adicionando um post

segunda-feira, 8 de junho de 2009

Page 52: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Validação de camposapp/models/post.php

validação

segunda-feira, 8 de junho de 2009

Page 53: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Validação de campos

segunda-feira, 8 de junho de 2009

Page 54: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Deletando um postapp/controllers/posts_controller.php

segunda-feira, 8 de junho de 2009

Page 55: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Deletando um postapp/views/posts/index.ctp

confirma a operação

segunda-feira, 8 de junho de 2009

Page 56: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Deletando um post

segunda-feira, 8 de junho de 2009

Page 57: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Editando um postapp/controllers/posts_controller.php

segunda-feira, 8 de junho de 2009

Page 58: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Editando um postapp/views/posts/edit.ctp

segunda-feira, 8 de junho de 2009

Page 59: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Editando um postapp/views/posts/index.ctp

e tome helper

segunda-feira, 8 de junho de 2009

Page 60: Cakephp - Aprendendo a fazer o primeiro bolo

Aplicação exemplo: Blog

Editando um post

segunda-feira, 8 de junho de 2009

Page 61: Cakephp - Aprendendo a fazer o primeiro bolo

Extras

CRUD e Scaffoldingapp/model/comment.php

app/model/comment.php

segunda-feira, 8 de junho de 2009

Page 62: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 63: Cakephp - Aprendendo a fazer o primeiro bolo

Extras

CRUD via Bake

$ cd ./cake/console$ ./cake bake

segunda-feira, 8 de junho de 2009

Page 64: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 65: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 66: Cakephp - Aprendendo a fazer o primeiro bolo

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

Page 67: Cakephp - Aprendendo a fazer o primeiro bolo

Fechando o buteco

Perguntas ???

A resposta é OBVIA!!!

42Não suporto perguntas!

segunda-feira, 8 de junho de 2009

Page 68: Cakephp - Aprendendo a fazer o primeiro bolo

Fechando o buteco

Asta La Vista BabyLéo Hackin

e-mail e MSN

[email protected]

Skype

leohackin

Blog

www.leohackin.com.br/blog

segunda-feira, 8 de junho de 2009

Page 69: Cakephp - Aprendendo a fazer o primeiro bolo

F u i ...

segunda-feira, 8 de junho de 2009