Tutorial Cakephp

152
CakePHP Aprendendo a fazer o primeiro bolo por Léo Hackin

description

Cake php

Transcript of Tutorial Cakephp

Page 1: Tutorial Cakephp

CakePHPAprendendo a fazer o primeiro bolo

por Léo Hackin

Page 2: Tutorial Cakephp

Cardápio

Roteiro

O PHP ontem e hoje

Lógica x Apresentação

MVC

CakePHP

Aplicação exemplo: Blog

Conclusões

Page 3: Tutorial Cakephp

Mamma mia!

Pratos do dia

PHP à CarbonaraLógica misturada a apresentação

Page 4: Tutorial Cakephp

Eita nóis!

Pratos do dia

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

Page 5: Tutorial Cakephp

Oxente!

Pratos do dia

Modelo-Visão-Controlador

Arrumadinho MVC

Page 6: Tutorial Cakephp

Agora sim...

Pratos do dia

E para sobremesa ... BOLO!

Page 7: Tutorial Cakephp

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 trabalha como analista de

soluções JavaEE para attPS Tech (São Paulo) e como Consultor em soluções para internet

em empresas privadas.

Page 8: Tutorial Cakephp

O PHP ontem e hoje

O PHP ontem

Page 9: Tutorial Cakephp

O PHP ontem e hoje

O PHP ontem

Linguagem para apps simples

Page 10: Tutorial Cakephp

O PHP ontem e hoje

O PHP ontem

Linguagem para apps simples

POGramadores doidões

Page 11: Tutorial Cakephp

O PHP ontem e hoje

O PHP ontem

Linguagem para apps simples

POGramadores doidões

Baixa remuneração

Page 12: Tutorial Cakephp

O PHP ontem e hoje

O PHP ontem

Linguagem para apps simples

POGramadores doidões

Baixa remuneração

Consistência discutível

Page 13: Tutorial Cakephp

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

Page 14: Tutorial Cakephp

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

Page 15: Tutorial Cakephp

O PHP ontem e Hoje

Agravantes

Page 16: Tutorial Cakephp

O PHP ontem e Hoje

Agravantes

Falta de conhecimento teórico de programação

Page 17: Tutorial Cakephp

O PHP ontem e Hoje

Agravantes

Falta de conhecimento teórico de programação

Rápido == feito nas coxas

Page 18: Tutorial Cakephp

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)

Page 19: Tutorial Cakephp

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”

Page 20: Tutorial Cakephp

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 ...

Page 21: Tutorial Cakephp

O PHP ontem e Hoje

O PHP hoje

Page 22: Tutorial Cakephp

O PHP ontem e Hoje

O PHP hoje

Maturidade para soluções corporativas

Page 23: Tutorial Cakephp

O PHP ontem e Hoje

O PHP hoje

Maturidade para soluções corporativas

OO verdadeiro

Page 24: Tutorial Cakephp

O PHP ontem e Hoje

O PHP hoje

Maturidade para soluções corporativas

OO verdadeiro

Remuneração “de gente”

Page 25: Tutorial Cakephp

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

Page 26: Tutorial Cakephp

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!

Page 27: Tutorial Cakephp

O PHP ontem e Hoje

O PHP hoje

O tempo passa!

O tempo voa!

Maturidade para soluções corporativas

OO verdadeiro

Remuneração “de gente”

Montes e montes de documentação

N projetos ... FRAMEWORKS!

Page 28: Tutorial Cakephp

Lógica x Apresentação

PHP gerando HTML

Page 29: Tutorial Cakephp

Lógica x Apresentação

PHP espaguete

Page 30: Tutorial Cakephp

Lógica x Apresentação

PHP espaguete

Page 31: Tutorial Cakephp

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

Page 32: Tutorial Cakephp

Lógica x Apresentação

Ops... Problemas!

PHP à Carbonara

Page 33: Tutorial Cakephp

Lógica x Apresentação

Ops... Problemas!

PHP à Carbonara

=

Page 34: Tutorial Cakephp

MVC

O que é MVC

Page 35: Tutorial Cakephp

MVC

O que é MVC

Padrão de arquitetura de software

Page 36: Tutorial Cakephp

MVC

O que é MVC

Padrão de arquitetura de software

Separação da aplicação em três partes:

Page 37: Tutorial Cakephp

MVC

O que é MVC

Padrão de arquitetura de software

Separação da aplicação em três partes:

Os dados da aplicação

Page 38: Tutorial Cakephp

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

Page 39: Tutorial Cakephp

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

Page 40: Tutorial Cakephp

MVC

Características

Page 41: Tutorial Cakephp

MVC

Características

Base funcional para toda a aplicação

Page 42: Tutorial Cakephp

MVC

Características

Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

Page 43: Tutorial Cakephp

MVC

Características

Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

Consistência e produtividade

Page 44: Tutorial Cakephp

MVC

Características

Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

Consistência e produtividade

Desenvolvimento em paralelo

Page 45: Tutorial Cakephp

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

Page 46: Tutorial Cakephp

MVC

Como funciona, tio ?

Page 47: Tutorial Cakephp

MVC

Como funciona, tio ?Browser envia requisição à aplicação

Page 48: Tutorial Cakephp

MVC

Como funciona, tio ?Browser envia requisição à aplicação

http://site/hello

Page 49: Tutorial Cakephp

MVC

Como funciona, tio ?Browser envia requisição à aplicação

O controller processa a ação

http://site/hello

Page 50: Tutorial Cakephp

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

Page 51: Tutorial Cakephp

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

http://site/hello

Page 52: Tutorial Cakephp

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

http://site/hello

Page 53: Tutorial Cakephp

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

http://site/hello

Page 54: Tutorial Cakephp

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

Page 55: Tutorial Cakephp

MVC

Frameworks PHP

Page 56: Tutorial Cakephp

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”.

Page 57: Tutorial Cakephp

CakePHP

O que é CakePHP

Page 58: Tutorial Cakephp

CakePHP

O que é CakePHPCompatível com PHP 4 e 5

Page 59: Tutorial Cakephp

CakePHP

O que é CakePHPCompatível com PHP 4 e 5

Arquitetura MVC

Page 60: Tutorial Cakephp

CakePHP

O que é CakePHPCompatível com PHP 4 e 5

Arquitetura MVC

Helpers Ajax, HTML, JS e outros

Page 61: Tutorial Cakephp

CakePHP

O que é CakePHPCompatível com PHP 4 e 5

Arquitetura MVC

Helpers Ajax, HTML, JS e outros

Componentes nativos para Email, Sessões, Segurança ...

Page 62: Tutorial Cakephp

CakePHP

O que é CakePHPCompatí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

Page 63: Tutorial Cakephp

CakePHP

O que é CakePHPCompatí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)

Page 64: Tutorial Cakephp

CakePHP

O que é CakePHPCompatível com PHP 4 e 5

Arquitetura MVC

Helpers Ajax, HTML, JS e outros

Componentes nativos para Email, Sessões, Segurança ...

Internacionalização

CRUD (Create-Read-Update-Delete) integrado

ActiveRecord (ORM)

Page 65: Tutorial Cakephp

CakePHP

O que é CakePHPCompatí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)

Page 66: Tutorial Cakephp

CakePHP

O que é CakePHPCompatí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) Ativa e crescente ?

NOFA!Eu quero!

Page 67: Tutorial Cakephp

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)

Page 68: Tutorial Cakephp

CakePHP

Instalando

Descompactar o arquivo em seu servidor web

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

Page 69: Tutorial Cakephp

CakePHP

InstalandoConfigurar o http.conf

Page 70: Tutorial Cakephp

CakePHP

InstalandoConfigurar o http.conf

Page 71: Tutorial Cakephp

CakePHP

InstalandoConfigurar o http.conf

Page 72: Tutorial Cakephp

CakePHP

InstalandoConfigurar o http.conf

Page 73: Tutorial Cakephp

CakePHP

InstalandoConfigurar o http.conf

Page 74: Tutorial Cakephp

CakePHP

InstalandoExecute e teste!

Page 75: Tutorial Cakephp

CakePHP

Estrutura Funcional

Page 76: Tutorial Cakephp

CakePHP

Estrutura Funcional

Page 77: Tutorial Cakephp

CakePHP

Estrutura Funcional

View

Model

Controller

Page 78: Tutorial Cakephp

CakePHP

Estrutura Funcional

View

Model

Controller

Behaviors e Datasources

Helpers e Elements

Components

Page 79: Tutorial Cakephp

CakePHP

Estrutura de Arquivos

Page 80: Tutorial Cakephp

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

Page 81: Tutorial Cakephp

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

Page 82: Tutorial Cakephp

Aplicação exemplo: Blog

O primeiro bolo

O primeiro a gente

NUNCAesquece ...

Aplicação de blog

Listar

Inserir

Editar

Deletar

Page 83: Tutorial Cakephp

Aplicação exemplo: Blog

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

app/config/database.php

Page 84: Tutorial Cakephp

Aplicação exemplo: Blog

Criando o modelCriar tabela na database escolhida

Page 85: Tutorial Cakephp

Aplicação exemplo: Blog

Criando o modelapp/models/post.php

Page 86: Tutorial Cakephp

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

Page 87: Tutorial Cakephp

Aplicação exemplo: Blog

Criando o controllerapp/controllers/posts_controller.php

Page 88: Tutorial Cakephp

Aplicação exemplo: Blog

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

Page 89: Tutorial Cakephp

Aplicação exemplo: Blog

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

helper $html->link

Page 90: Tutorial Cakephp

Aplicação exemplo: Blog

Acessando a ação

http://localhost/posts

Page 93: Tutorial Cakephp

Aplicação exemplo: Blog

Executando a ação

Page 94: Tutorial Cakephp

Aplicação exemplo: Blog

Adicionando açõesapp/controllers/posts_controller.php

Page 95: Tutorial Cakephp

Aplicação exemplo: Blog

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

Page 96: Tutorial Cakephp

Aplicação exemplo: Blog

Acessando a ação

http://localhost/posts/view/2

Page 100: Tutorial Cakephp

Aplicação exemplo: Blog

Acessando a ação

http://localhost/posts/view/2

host

controller ação

ID

Page 101: Tutorial Cakephp

Aplicação exemplo: Blog

Adicionando ações

Page 102: Tutorial Cakephp

Aplicação exemplo: Blog

Modificando o layout

Layout

View

Elements

Page 103: Tutorial Cakephp

Aplicação exemplo: Blog

Modificando o layout

Layout

View

Elements

Page 104: Tutorial Cakephp

Aplicação exemplo: Blog

Modificando o layout

Layout

View

Elements

Page 105: Tutorial Cakephp

Aplicação exemplo: Blog

Modificando o layout

Layout

View

Elements

Page 106: Tutorial Cakephp

Aplicação exemplo: Blog

Modificando o layout

Page 107: Tutorial Cakephp

Aplicação exemplo: Blog

Modificando o layout

conteúdo da view

Page 108: Tutorial Cakephp

Aplicação exemplo: Blog

Modificando o layoutAntes Depois

Page 109: Tutorial Cakephp

Aplicação exemplo: Blog

Adicionando um postapp/controllers/posts_controller.php

Page 110: Tutorial Cakephp

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/add.ctp

Page 111: Tutorial Cakephp

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/add.ctp

FormHelper

Page 112: Tutorial Cakephp

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/index.ctp

Page 113: Tutorial Cakephp

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/index.ctp

Page 114: Tutorial Cakephp

Aplicação exemplo: Blog

Adicionando um post

Page 115: Tutorial Cakephp

Aplicação exemplo: Blog

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

Page 116: Tutorial Cakephp

Aplicação exemplo: Blog

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

validação

Page 117: Tutorial Cakephp

Aplicação exemplo: Blog

Validação de campos

Page 118: Tutorial Cakephp

Aplicação exemplo: Blog

Validação de campos

Page 119: Tutorial Cakephp

Aplicação exemplo: Blog

Deletando um postapp/controllers/posts_controller.php

Page 120: Tutorial Cakephp

Aplicação exemplo: Blog

Deletando um postapp/views/posts/index.ctp

Page 121: Tutorial Cakephp

Aplicação exemplo: Blog

Deletando um postapp/views/posts/index.ctp

confirma a operação

Page 122: Tutorial Cakephp

Aplicação exemplo: Blog

Deletando um post

Page 123: Tutorial Cakephp

Aplicação exemplo: Blog

Editando um postapp/controllers/posts_controller.php

Page 124: Tutorial Cakephp

Aplicação exemplo: Blog

Editando um postapp/views/posts/edit.ctp

Page 125: Tutorial Cakephp

Aplicação exemplo: Blog

Editando um postapp/views/posts/edit.ctp

Page 126: Tutorial Cakephp

Aplicação exemplo: Blog

Editando um postapp/views/posts/index.ctp

Page 127: Tutorial Cakephp

Aplicação exemplo: Blog

Editando um postapp/views/posts/index.ctp

e tome helper

Page 128: Tutorial Cakephp

Aplicação exemplo: Blog

Editando um post

Page 129: Tutorial Cakephp

Extras

CRUD e Scaffoldingapp/model/comment.php

app/model/comment.php

Page 130: Tutorial Cakephp

Extras

CRUD via ScaffoldingVantagens

Desvantagens

Page 131: Tutorial Cakephp

Extras

CRUD via Scaffolding

Ótimo para prototipar aplicações

Vantagens

Desvantagens

Page 132: Tutorial Cakephp

Extras

CRUD via Scaffolding

Ótimo para prototipar aplicações

Pode ser usado numa app em producão

Vantagens

Desvantagens

Page 133: Tutorial Cakephp

Extras

CRUD via Scaffolding

Ótimo para prototipar aplicações

Pode ser usado numa app em producão

Vantagens

Mamão com açucar!!

Desvantagens

Page 134: Tutorial Cakephp

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

Page 135: Tutorial Cakephp

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)

Page 136: Tutorial Cakephp

Extras

CRUD via Bake

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

Page 137: Tutorial Cakephp

Extras

CRUD via BakeVantagens

Desvantagens

Page 138: Tutorial Cakephp

Extras

CRUD via Bake

Cria “esqueletos” de models, views e controllers

Vantagens

Desvantagens

Page 139: Tutorial Cakephp

Extras

CRUD via Bake

Cria “esqueletos” de models, views e controllers

Ao contrário do scaffold, cria arquivos reais na app

Vantagens

Desvantagens

Page 140: Tutorial Cakephp

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

Vantagens

Desvantagens

Page 141: Tutorial Cakephp

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

Vantagens

Desvantagens

Permite configurar os modelos

Page 142: Tutorial Cakephp

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

Page 143: Tutorial Cakephp

Fechando o buteco

Conclusões

Page 144: Tutorial Cakephp

Fechando o buteco

Conclusões

Fácil de codificar

Page 145: Tutorial Cakephp

Fechando o buteco

Conclusões

Fácil de codificar

ORM e MVC aumentam a produtividade

Page 146: Tutorial Cakephp

Fechando o buteco

Conclusões

Fácil de codificar

ORM e MVC aumentam a produtividade

Ferramentas de prototipação poderosas (bake/scaffold)

Page 147: Tutorial Cakephp

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

Page 148: Tutorial Cakephp

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

Page 149: Tutorial Cakephp

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

Page 150: Tutorial Cakephp

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.

Page 151: Tutorial Cakephp

Fechando o buteco

Asta La Vista BabyLéo Hackin

e-mail e MSN

[email protected]

Skype

leohackin

Blog

www.leohackin.com.br/blog

Page 152: Tutorial Cakephp

F u i ...