Cakephp - Aprendendo a fazer o primeiro bolo

Post on 06-Jun-2015

11.681 views 0 download

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

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 reservascontato@giran.com.br

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

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

leohackin@gmail.com

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