![Page 1: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/1.jpg)
Mini-curso deCakePHP
![Page 2: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/2.jpg)
Apresentação
Daniel Golgher - formado em Tecnologia em Processamento de Dados e bacharel em Sistema de Informação pela UNA. Pós graduado em Engenharia de Software pela UFMG.
Desenvolve utilizando PHP desde 2001, sócio na 2km interativa! empresa mineira que desenvolveu mais de 30 projetos em CakePHP em um ano.
Gosta de software livre, principalmente do projetos: CakePHP, FreeBSD, MySQL, Apache, PHP, Python dentre outros.
Nas horas vagas vai ao cinema com a namorada e passeia com o Baco (São Bernardo).
![Page 3: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/3.jpg)
Motivação
Divulgar o framework CakePHP
Retribuir à comunidade de software livre
Combater o código 'espaguete'
Mostrar como programar pode ser simples e divertido!
![Page 4: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/4.jpg)
Introdução
O que são frameworks?
Framework é uma biblioteca de classes?
Qual a vantagem de utilizar um framework?
![Page 5: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/5.jpg)
CakePHP
É um framework desenvolvido em linguagem PHP.
Permite o desenvolvimento em 3 camadas (MVC)
Permite mapeamento do banco de dados para o mundo orientado a objetos (ORM)
Desenvolvimento utilizando Convenções (CoC)
Desenvolvimento focado na não repetição de fontes (DRY)
Código final simples e organizado (KISS)
![Page 6: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/6.jpg)
É só isso que o CakePHP faz?
![Page 7: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/7.jpg)
Outros Recursos
i18n, l10n - Internacionalização e localizacãoSegurança (RFI, LFI, injection, CSRF, XSS, Session hijacking, Session fixation), Data Sanitization, Acl e AuthGerador de Código-fonte (bake)Validação do formulárioDiversos Components, Behaviors e HelpersFerramenta de template utilizando sintaxe PHPURL amigáveisCriação de Ajax de forma simplesScaffolding - geração de views on-the-flyE o principal: devolve ao programador a diversão de programar
![Page 8: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/8.jpg)
Instalação
Todas as máquinas têm instalado Apache, php e mysql
Verificar se o módulo rewrite está habilitado no Apache (httpd.conf)
Baixar o cakephp (http://cakephp.org)
Descompactar o arquivo na pasta htdocs do apache
Acessar http://localhost
![Page 9: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/9.jpg)
Configuração
Arquivo: .../htdocs/app/config/database.php
Configurar o array default inserindo: host, usuário, senha e banco de dados.
Arquivo: .../htdocs/app/config/core.php
Alterar o valor do Security.salt
![Page 10: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/10.jpg)
Estrutura de diretórios do CakePHPDiretório Descrição
/app/ Onde os arquivos da aplicação são gravados./app/config/ Todos os arquivos de configuração ficam nesta pasta.
/app/models/ As classes da camada de modelo devem ser escritas neste diretório.
/app/constrollers/ As classes da camada de controle devem ser escritas neste diretório.
/app/views/ Os arquivos da camada de visão devem ser escritos neste diretório.
/app/webroot/ Todas as requisições são direcionadas para este diretório.As pastas deste diretório servem como abrigo para arquivos css, imagens, javascripts e qualquer outro arquivo que precisa estar disponíveis para requisição direta.
/cake/ Os arquivos do framework ficam neste diretório.O desenvolvedor não deve alterar o conteúdo desta pasta, somente se souber o que está fazendo.
![Page 11: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/11.jpg)
Convenções no CakePHPLocal Regra Exemplo
Banco de Dados Nome das tabelas - Plural, Minúsculo usuarios, posts, artigos
Banco de Dados Chave Primária - id int auto_increment
Banco de Dados Campos: Minúsculo, usando sublinhados nome, data_de_nascimento
Banco de Dados Chave estrangeira: nome da tabela relacionada no singular + sublinhado + id
cliente_id, usuario_id
Banco de Dados Relacionamento N-M: tabelas em ordem alfabética, separadas por sublinhado
produtos_usuarios, grupos_usuarios
Model Nome do Arquivo: Singular e CamelCase Usuario.php, Grupo.php
Model Nome da Classe: Singular e CamelCase Usuario, Grupo
Controller Nome do Arquivo: Plural, sublinhados e terminado em controller
usuarios_controller.php
Controller Nome da Classe: Plural, CameCase e terminado em Controller
UsuariosController, GruposController
View Local dos arquivos: /views/nome_do_controller /views/usuarios/,/views/grupos/
View Nome dos arquivos: nome da ação do controller com sublinhados
/views/usuarios/add.ctp, /views/grupos/index.ctp
![Page 12: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/12.jpg)
Fluxo de uma requisição
![Page 13: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/13.jpg)
Camada de Modelo: Atributos
useDbConfig
useTable
tablePrefix
primaryKey
displayField
recursive
order
validate
![Page 14: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/14.jpg)
Camada de Modelo: Relacionamentos
HasOne
HasMany
BelongsTo
HasAndBelongsToMany (HABTM)
![Page 15: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/15.jpg)
Camanda de Modelo: Métodos
Recuperar
find
findAllBy<name>
query
Salvar
save
saveAll
create
Apagar
del
deleteAll
![Page 16: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/16.jpg)
Camada de Modelo: Callbacks
beforeFind
afterFind
beforeValidate
afterValidate
beforeSave
afterSave
beforeDelete
afterDelete
![Page 17: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/17.jpg)
Camada de Controle: Atributos
name
components
helpers
uses
layout
pageTitle
params
data
![Page 18: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/18.jpg)
Camada de Controle: Métodos
set
render
redirect
flash
referer
paginate
![Page 19: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/19.jpg)
Camada de Controle: Callbacks
beforeFilter
beforeRender
alfterFilter
afterRender
![Page 20: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/20.jpg)
A Camada de visão
Layout
View
Elements
Helpers
![Page 21: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/21.jpg)
Campanha para acabar com o espaguete
A 2km atua na árdua batalha para acabar com o maldito código espaguete, caso você tenha interesse de se juntar a nossa causa, conheça as armas para por fim ao espaguete:
Curso de CakePHP
Curso de jQuery
Curso de Padrões Web
![Page 22: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/22.jpg)
Referências
Site oficial do cakephp www.cakephp.org
Manual do CakePHP book.cakephp.org
Artigos e tutoriais bakery.cakephp.org
Grupo do CakePHP em português groups.google.com/group/cake-php-pt
![Page 23: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/23.jpg)
Agradecimentos
Aos organizadores do 2o. encontro de PHP MG
A UNI-BH, pelo espaço cedido
Ao CakePHP, por facilitar minha vida
A comunidade do PHP pela presença
![Page 24: Mini-curso de CakePHP...CakePHP É um framework desenvolvido em linguagem PHP. Permite o desenvolvimento em 3 camadas (MVC) Permite mapeamento do banco de dados para o mundo orientado](https://reader034.vdocuments.mx/reader034/viewer/2022050508/5f993d19ac802d50b75feaec/html5/thumbnails/24.jpg)
Perguntas?
Daniel Golgher
- e-mail: [email protected] twitter: @golgher
www.2km.com.br - Twitter: @2km