CakePHP - Aprendendo a fazer o primeiro bolo

Preview:

DESCRIPTION

 

Citation preview

CakePHPAprendendo a fazer o primeiro bolo

por Léo Hackin

Cardápio

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 à CarbonaraLógica misturada a apresentação

Eita nóis!

Pratos do dia

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

Oxente!

Pratos do dia

Modelo-Visão-Controlador

Arrumadinho MVC

Agora sim...

Pratos do dia

E para sobremesa ... 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 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

Linguagem para apps simples

O PHP ontem e hoje

O PHP ontem

Linguagem para apps simples

POGramadores doidões

O PHP ontem e hoje

O PHP ontem

Linguagem para apps simples

POGramadores doidões

Baixa remuneração

O PHP ontem e hoje

O PHP ontem

Linguagem para apps simples

POGramadores doidões

Baixa remuneração

Consistência discutível

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

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

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

Rápido == feito nas coxas

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)

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”

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

O PHP ontem e Hoje

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

Remuneração “de gente”

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

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!

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!

Lógica x Apresentação

PHP gerando HTML

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

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

MVC

O que é MVC

Padrão de arquitetura de software

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

Os dados da aplicação

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

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

MVC

Características

MVC

Características

Base funcional para toda a aplicação

MVC

Características

Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

MVC

Características

Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

Consistência e produtividade

MVC

Características

Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

Consistência e produtividade

Desenvolvimento em paralelo

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

MVC

Como funciona, tio ?

MVC

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

MVC

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

http://site/hello

MVC

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

O controller processa a ação

http://site/hello

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

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

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

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

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

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 é CakePHPCompatível com PHP 4 e 5

CakePHP

O que é CakePHPCompatível com PHP 4 e 5

Arquitetura MVC

CakePHP

O que é CakePHPCompatível com PHP 4 e 5

Arquitetura MVC

Helpers Ajax, HTML, JS e outros

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

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

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)

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)

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)

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!

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)

CakePHP

Instalando

Descompactar o arquivo em seu servidor web

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

CakePHP

InstalandoConfigurar o http.conf

CakePHP

InstalandoConfigurar o http.conf

CakePHP

InstalandoConfigurar o http.conf

CakePHP

InstalandoConfigurar o http.conf

CakePHP

InstalandoConfigurar o http.conf

CakePHP

InstalandoExecute e teste!

CakePHP

Estrutura Funcional

CakePHP

Estrutura Funcional

CakePHP

Estrutura Funcional

View

Model

Controller

CakePHP

Estrutura Funcional

View

Model

Controller

Behaviors e Datasources

Helpers e Elements

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

O primeiro a gente

NUNCAesquece ...

Aplicação de blog

Listar

Inserir

Editar

Deletar

Aplicação exemplo: Blog

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

app/config/database.php

Aplicação exemplo: Blog

Criando o modelCriar tabela na database escolhida

Aplicação exemplo: Blog

Criando o modelapp/models/post.php

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

Aplicação exemplo: Blog

Criando o controllerapp/controllers/posts_controller.php

Aplicação exemplo: Blog

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

Aplicação exemplo: Blog

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

helper $html->link

Aplicação exemplo: Blog

Acessando a ação

http://localhost/posts

Aplicação exemplo: Blog

Executando a ação

Aplicação exemplo: Blog

Adicionando açõesapp/controllers/posts_controller.php

Aplicação exemplo: Blog

Adicionando açõesapp/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

controller ação

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 layoutAntes Depois

Aplicação exemplo: Blog

Adicionando um postapp/controllers/posts_controller.php

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/add.ctp

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/add.ctp

FormHelper

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/index.ctp

Aplicação exemplo: Blog

Adicionando um postapp/views/posts/index.ctp

Aplicação exemplo: Blog

Adicionando um post

Aplicação exemplo: Blog

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

Aplicação exemplo: Blog

Validação de camposapp/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 postapp/controllers/posts_controller.php

Aplicação exemplo: Blog

Deletando um postapp/views/posts/index.ctp

Aplicação exemplo: Blog

Deletando um postapp/views/posts/index.ctp

confirma a operação

Aplicação exemplo: Blog

Deletando um post

Aplicação exemplo: Blog

Editando um postapp/controllers/posts_controller.php

Aplicação exemplo: Blog

Editando um postapp/views/posts/edit.ctp

Aplicação exemplo: Blog

Editando um postapp/views/posts/edit.ctp

Aplicação exemplo: Blog

Editando um postapp/views/posts/index.ctp

Aplicação exemplo: Blog

Editando um postapp/views/posts/index.ctp

e tome helper

Aplicação exemplo: Blog

Editando um post

Extras

CRUD e Scaffoldingapp/model/comment.php

app/model/comment.php

Extras

CRUD via ScaffoldingVantagens

Desvantagens

Extras

CRUD via Scaffolding

Ótimo para prototipar aplicações

Vantagens

Desvantagens

Extras

CRUD via Scaffolding

Ótimo para prototipar aplicações

Pode ser usado numa app em producão

Vantagens

Desvantagens

Extras

CRUD via Scaffolding

Ótimo para prototipar aplicações

Pode ser usado numa app em producão

Vantagens

Mamão com açucar!!

Desvantagens

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

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)

Extras

CRUD via Bake

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

Extras

CRUD via BakeVantagens

Desvantagens

Extras

CRUD via Bake

Cria “esqueletos” de models, views e controllers

Vantagens

Desvantagens

Extras

CRUD via Bake

Cria “esqueletos” de models, views e controllers

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

Vantagens

Desvantagens

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

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

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

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

Asta La Vista BabyLéo Hackin

e-mail e MSN

leohackin@gmail.com

Skype

leohackin

Blog

www.leohackin.com.br/blog

F u i ...

Recommended