Php 07 Cakephp

download Php 07 Cakephp

If you can't read please download the document

Transcript of Php 07 Cakephp

Instalao do Ruby

Programao para WEB

Regis Pires Magalhes

[email protected]

O Framework CakePHP

Framework

Oferece uma arquitetura que pode ser usada em vrias aplicaes.

Toda aplicao tem um conjunto de caractersticas bsicas em comum, que terminam sendo copiadas para a criao de novos cdigos.

Um framework projetado para prover uma estrutura para esses elementos comuns.

Publicaes sobre CakePHP

CakePHP in Action - The Official Guide

Duane O'Brien


Beginning CakePHP: From Novice to Professional

David Golding

Publicaes sobre CakePHP

Frameworks para Desenvolvimento em PHP

Elton Lus Minetto

Histrico

Em 2005, Michal Tatarynowicz escreveu uma pequena verso de um framework para aplicaes rpidas em PHP.

Depois ele publicou o framework sob licena MIT, chamando-o de Cake e abrindo-o comunidade que agora o mantm com o nome de CakePHP.

Caractersticas

Baseado no framework Ruby on Rails:

Conveno sobre Configurao;

Full Stack Web Framework;

DRY Dont Repeat Yourself No se repita

Arquitetura MVC Modelo, Viso, Controlador

Funcionalidade CRUD para interao com banco de dados

Scaffolding

Validaes nativas

Helpers nas vises para AJAX, JavaScript, HTML, formulrios, etc.

URLs e rotas personalizveis e limpas

Caractersticas

Ativo

Comunidade amigvel e extensa

Licena bastante flexvel (MIT)

Compatibilidade com PHP 4 e PHP 5

Gerao de cdigo

Componentes de E-mail, Cookie, Segurana, Sesses, Manipulao de Requisies, etc.

Lista de controle de acessos (ACL) flexvel

Cache flexvel

Internacionalizao e Localizao

Facilidade de disponibilizao

Comparativo com outros frameworks

Estrutura MVC mais eficiente que Symfony e Zend, alm de ocupar pouco espao no servidor. (David Golding)

Boa documentao, inclusive em portugus. Livros esto sendo publicados.

Comunidade grande e ativa.

Atualizaes freqentes.

Arquitetura MVC

Arquitetura MVC

Modelos para toda a interao com banco de dados;

Vises para todas as apresentaes e sadas;

Controladores para comandos e scripts.

MVC Vantagens

Tarefas repetitivas podem ser separadas, facilitando a manuteno, entendimento, alteraes, descoberta de erros e bugs, diviso de tarefas, etc.

Testando o PHP via console

php -v

Instalando o CakePHP

Baixe o CakePHP em:

http://cakephp.org/downloads

Descompacte-o na pasta htdocs e renomeie o diretrio para o nome mais adequado para sua aplicao.

Gerao de cdigo com Bake

Entre no diretrio do projeto:

cd \xampplite\htdocs\projeto-cake

Execute o gerador de cdigo (bake):

cake\console\cake bake -app app

Bake

Welcome to CakePHP v1.2.0.6311 beta Console--------------------------------------------------------------App : appPath: C:\xampplite\htdocs\locadora\app--------------------------------------------------------------Interactive Bake Shell--------------------------------------------------------------[D]atabase Configuration[M]odel[V]iew[C]ontroller[P]roject[Q]uitWhat would you like to Bake? (D/M/V/C/P/Q)

Estrutura de Diretrios

app nossa aplicao fica aqui.

cake o framework fica aqui. No mexa!!! Pode-se atualizar a verso do CakePHP sem interferir na aplicao.

docs documentao da nossa aplicao.

index.php coletor de requisies. Recebe as requisies se:

mod_rewrite ou .htaccess no estiver disponvel

/public no estiver definido como web root.

vendors bibliotecas de terceiros.

Estrutura de Diretrios

No diretrio App temos :

config: Arquivos de configurao

controllers: controladores

models: modelos

views: vises

webroot: html's, imagens, swf, css, javascript, etc.

Configurando o CakePHP

Teste a aplicao.

Algumas observaes aparecero e devero ser seguidas:

Alterar a seguinte linha do arquivo /app/config/core.php:

Configure::write('Security.salt', 'DyhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

Renomear o arquivo config/database.php.default para config/database.php e configur-lo para acessar o banco de dados de nossa aplicao.

Configuraes da base de dados

driver

Nome do driver da base de dados para esta configurao. Exemplos: mysql, postgres, sqlite, pear-drivername, adodb-drivername, mssql, oracle, ou odbc.

persistent

Se usar ou no uma conexo persistente com a base de dados.

host

O nome do servidor da base de dados (ou endereo IP).

login

O usurio desta conta.

password

A senha desta conta.

database

O nome da base de dados que esta conexo ir usar.

prefix (opcional)

Esta string ser adicionada como prefixo no nome de todas tabelas de sua base de dados.Se suas tabelas no possuem prefixo, deixe esta string vazia.

port (opcional)

A porta TCP ou socket Unix usado para conectar com o servidor.

enconding

Indica qual caractere definido ser usado para enviar indicaes SQL ao servidor.

schema

Usado em instalaes de base de dados PostgreSQL para especificar qual schema usar.

Base de Dados usando MySQL

app/config/database.php

Base de Dados usando MySQLi

app/config/database.php

Ol, Mundo!!!

app/controllers/hello_controller.php

Ol, Mundo!!!

Ol, Mundo!!!

app/views/hello/index.ctp

app/controllers/hello_controller.php

Envio de dados do controlador para a viso

Ol, .

app/views/hello/index.ctp

app/controllers/hello_controller.php

Mtodo set

O mtodo set usado nos controladores serve para enviar dados do controlador para a viso.

Exemplos:

$this->set('cor','azul');$this->set('colecoes',$this->Colecao->findAll());

Layouts

Layout padro:

cake/libs/view/layouts/default.ctp

Layout personalizado:

app\views\layouts\default.ctp

Aplicao ExemploMinha Aplicao

Fluxo de funcionamento do CakePHP

Configurao

app/config/core.php

debug

0 = Modo de Produo. Nenhuma sada.

1 = Exibe erros e alertas.

2 = Exibe erros, alertas e SQL.

3 = Exibe erros, alertas, SQL e listagem completa do controller.

Paginao

Padro: 20 itens por pgina

Configurao no controller:

var $paginate = array('limit' => 10);

var $paginate = array('limit' => 10,
'order' => 'Filme.titulo');

var $paginate = array('limit' => 10,
'order' => array('Filme.titulo' => 'desc'));

Paginao

Uso:

$filmes = $this->paginate();

$this->set('filmes', $filmes);

Ou:

$filmes = $this->paginate('Filme');

$this->set('filmes', $filmes);

Paginao

Na viso:

Paginao

Na viso:

Paginao

O contador pode ser personalizado:

Validao

Validao

Validao

Validao

Validao

alphaNumeric

between

blank

cc

comparison

date

decimal

email

equalTo

extension

ip

minLength

maxLength

money

numeric

phone

postal

range

url

Associaes

$belongsTo

$hasOne

$hasMany

$hasAndBelongsToMany

Associaes

Associaes

Associaes

$generos = $this->Filme->Genero->find('list',array('order' => 'Genero.descricao'));$this->set(compact('generos'));

$generos = $this->Filme->Genero->find('list', array('conditions' => array('Genero.descricao' => 'like a%'), 'order' => 'Genero.descricao'));$this->set(compact('generos'));

No modelo (genero.php):

Nas actions add e edit do controller (filmes_controller.php):

var $displayField = 'descricao';

Rotas

Definies de rota dizem ao CakePHP como mapear URLs para aes de controladores.

Comportamento padro:

A URL "/controller/action/var1/var2" mapeada para Controller::action($var1, $var2)

Tal comportamento pode ser personalizado.

Definio de Rotas

Arquivo:

/app/config/routes.php

Exemplo:

Flash

Usado para comunicao entre aes.

Contm uma string contendo informao ou erro.

Existe somente durante uma requisio.

No controller:

$this->Session->setFlash('OK');

Na view:

Logging

Usar:

$this->log("Ops, algo no deu certo!");

$this->log('mensagem de debug.', LOG_DEBUG);

Verificar em:

app/tmp/logs/error.log

app/tmp/logs/debug.log

Nveis de log:

LOG_ERROR

LOG_DEBUG

Model

Normalmente representam tabelas no banco de dados, mas tambm podem ser entradas LDAP, feeds RSS, arquivos no sistema, etc.

Model

app/models/pessoa.php

Personalizao de plurais

Pode-se ajustar a pluralizao no arquivo:

/app/config/inflections.php

Exemplo:

$irregularPlural = array('valor' => 'valores');

Controller

app/controllers/pessoas_controller.php

View

Obtm dados do controller e os usa para gerar a apresentao para o cliente.

Views so normalmente HTML, mas tambm podem ser: PDF, XML, objetos JSON, etc.

Layouts

Por padro, cada viso gerada pelo controlador colocada dentro de um layout.

Helpers de Viso

Ajudam na lgica de apresentao.

Compartilhados entre vrias vises.

$html->link

Compartilhamento de Cdigo

Controladores, Helpers e Modelos possuem uma super-classe que permitem o compartilhamento de cdigo entre vrios controladores, helpers ou modelos:

AppController /app/app_controller.php

AppHelper /app/app_helper.php

AppModel /app/app_model.php

Controller - Callbacks

Controladores possuem callbacks.

E o que so callbacks?

So funes/mtodos que ao invs de serem chamados diretamente por ns, so executadas pelo sistema/framework quando necessrio.

Callbacks so usados quando precisamos de alguma lgica entre operaes do prprio CakePHP.

Controller - Callbacks

Callbacks disponveis nos controladores:

beforeFilter() - executado antes de qualquer ao do controlador.

beforeRender() - executado aps a lgica do controlador, mas antes da gerao da viso.

afterFilter() - executado aps toda a lgica do controlador e gerao da viso.

afterRender() - A mesma coisa que afterFilter(), exceto quando h alguma lgica aps uma chamada explcita a render() na ao do controller.

Model Callbacks

beforeFind()

afterFind()

beforeValidate()

beforeSave()

afterSave()

beforeDelete()

afterDelete()

Autenticao

Criar tabela usuarios

Campo email - varchar(100)

Campo senha varchar(40)

Criar modelo, viso e controlador para Usuario

Autenticao

AppController

Autenticao

Criar aes login e logout no controlador de usurios:

Autenticao

Criar viso de login (/app/views/usuarios/login.ctp)

Digite usurio e senha para acessar o sistema

Autenticao

No Layout

Item de Menu:

Mensagem:

Permisses de Acesso

ACL Access Control Lists

ARO Access Request Objects

Usurios ou Grupos

Exemplo: admin, usuario, convidado

ACO Access Control Objects

Controladores, aes

Exemplo: Filme, Genero

ACL decide se um ARO pode acessar um ACO.

Ou seja: se um usurio tem acesso a uma ao C, R, U ou D do ACO.

AROs

$aro = new Aro();$aro->create($user_id, $parent_id, $alias);

$aro->create(0, null, 'Presidents');$aro->create(0, null, 'Artists');

$aro->create( 1, null, 'Bob Marley' );$aro->create( 2, null, 'Jimi Hendrix');$aro->create( 3, null, 'George Washington');$aro->create( 4, null, 'Abraham Lincoln');

$aro->setParent('Presidents', 'George Washington');$aro->setParent('Presidents', 'Abraham Lincoln');$aro->setParent('Artists', 'Jimi Hendrix');$aro->setParent('Artists', 'Bob Marley');?>

ACOs

$aco = new Aco();$aco->create($id, $parent, $alias);

$aco->create(1, null, 'Electric Guitar');$aco->create(2, null, 'United States Army');$aco->create(3, null, 'Fans');

ACL

ACL

$this->Acl->check($aro, $aco, $action = '*');

ACL

cd app..\cake\console\cake schema run create DbAcl

Criando as tabelas de ACL:

Referncias

The Cookbook

http://book.cakephp.org

API

http://api.cakephp.org/1.2

Bakery

http://bakery.cakephp.org

CakeForge

http://bakery.cakephp.org

Site oficial

http://www.cakephp.org

Grupo Google

http://groups.google.com/group/cake-php

Muokkaa otsikon tekstimuotoa napsauttamalla

Muokkaa jsennyksen tekstimuotoa napsauttamalla

Toinen jsennystaso

Kolmas jsennystaso

Neljs jsennystaso

Viides jsennystaso

Kuudes jsennystaso

Seitsems jsennystaso

Kahdeksas jsennystaso

Yhdekss jsennystaso

Muokkaa otsikon tekstimuotoa napsauttamalla

Muokkaa jsennyksen tekstimuotoa napsauttamalla

Toinen jsennystaso

Kolmas jsennystaso

Neljs jsennystaso

Viides jsennystaso

Kuudes jsennystaso

Seitsems jsennystaso

Kahdeksas jsennystaso

Yhdekss jsennystaso