Desenvolvimento Web com CakePHP

85
Desenvolvimento Web com CakePHP Sérgio Vilar Desenvolvedor de Interfaces, Redesoft

description

 

Transcript of Desenvolvimento Web com CakePHP

Page 1: Desenvolvimento Web com CakePHP

Desenvolvimento Web com CakePHPSérgio VilarDesenvolvedor de Interfaces, Redesoft

Page 2: Desenvolvimento Web com CakePHP

Agenda

• Pré-requisitos para este minicurso

• Frameworks

• MVC

• CakePHP

• Mão na massa

Page 3: Desenvolvimento Web com CakePHP

Pré-requisitos para este minicurso

• Lógica de programação

• Php Básico

• Computador com Apache e MySQL

• Editor de texto de sua preferência

• Um suco, um toddynho, um café...

Page 4: Desenvolvimento Web com CakePHP

Frameworks

Page 5: Desenvolvimento Web com CakePHP

O que é um framework?

• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.

Page 6: Desenvolvimento Web com CakePHP

O que é um framework?

• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:

Page 7: Desenvolvimento Web com CakePHP

O que é um framework?

• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:

• Múltiplos bancos de dados

Page 8: Desenvolvimento Web com CakePHP

O que é um framework?

• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:

• Múltiplos bancos de dados

• Cache

Page 9: Desenvolvimento Web com CakePHP

O que é um framework?

• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:

• Múltiplos bancos de dados

• Cache

• Templates

Page 10: Desenvolvimento Web com CakePHP

O que é um framework?

• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:

• Múltiplos bancos de dados

• Cache

• Templates

• Validação

Page 11: Desenvolvimento Web com CakePHP

O que é um framework?

• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:

• Múltiplos bancos de dados

• Cache

• Templates

• Validação

• Login de usuários

Page 12: Desenvolvimento Web com CakePHP

O que é um framework?

• É uma estrutura de suporte desenvolvida para que outro projeto de software seja organizado e desenvolvido o tomando como base.

• Os Frameworks Php geralmente oferecem uma série de recursos como:

• Múltiplos bancos de dados

• Cache

• Templates

• Validação

• Login de usuários

• Geração de código

Page 13: Desenvolvimento Web com CakePHP

Porque usar um Framework?

Page 14: Desenvolvimento Web com CakePHP

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

Page 15: Desenvolvimento Web com CakePHP

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

• Código orientado a objetos e organizado

Page 16: Desenvolvimento Web com CakePHP

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

• Código orientado a objetos e organizado

• Consequentemente, manutenção mais fácil

Page 17: Desenvolvimento Web com CakePHP

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

• Código orientado a objetos e organizado

• Consequentemente, manutenção mais fácil

• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)

Page 18: Desenvolvimento Web com CakePHP

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

• Código orientado a objetos e organizado

• Consequentemente, manutenção mais fácil

• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)

• Comunidade ativa (Componentes e add-ons à vontade)

Page 19: Desenvolvimento Web com CakePHP

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

• Código orientado a objeto e organizado

• Consequentemente, manutenção mais fácil

• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)

• Comunidade ativa (Componentes e add-ons à vontade)

• Desenvolvimento simples e ágil (em sua maioria)

Page 20: Desenvolvimento Web com CakePHP

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

• Código orientado a objeto e organizado

• Consequentemente, manutenção mais fácil

• Tarefas comuns embutidas (Conexão a vários DBS, validação, etc)

• Comunidade ativa (Componentes e add-ons à vontade)

• Desenvolvimento simples e ágil (em sua maioria)

• Evitar a POG (Programação Orientada a Gambiarra)

Page 21: Desenvolvimento Web com CakePHP

Principais Frameworks PHP

• Yii

• CodeIgniter

• CakePHP

• Zend

• Symfony

Fonte: phpframeworks.com

Page 22: Desenvolvimento Web com CakePHP

MVC

Page 23: Desenvolvimento Web com CakePHP

MVC

• Padrão de projetos

Page 24: Desenvolvimento Web com CakePHP

MVC

• Padrão de projetos

• Separa a aplicação em três partes:

Page 25: Desenvolvimento Web com CakePHP

MVC

• Padrão de projetos

• Separa a aplicação em três partes:

Model

Interação com o banco

Page 26: Desenvolvimento Web com CakePHP

MVC

• Padrão de projetos

• Separa a aplicação em três partes:

Model

View

Interação com o banco

Interface da aplicação

Page 27: Desenvolvimento Web com CakePHP

MVC

• Padrão de projetos

• Separa a aplicação em três partes:

Model

View Controler

Interação com o banco

Lógica da aplicaçãoInterface da aplicação

Page 28: Desenvolvimento Web com CakePHP

MVC

• Padrão de projetos

• Separa a aplicação em três partes:

Model

View Controler

Interação com o banco

Lógica da aplicaçãoInterface da aplicação

Como assim, Bial?

Page 29: Desenvolvimento Web com CakePHP

MVC

Browser Controler

O Browser envia uma requisição à aplicação

Page 30: Desenvolvimento Web com CakePHP

MVC

Browser Controler

O Controller processa a requisicão e consulta a lógica de negócio da aplicação

Model

Page 31: Desenvolvimento Web com CakePHP

MVC

Browser Controler

O Model acessa o Banco de Dados e recupera os dados requisitados pelo

Controller

Model

DB

Page 32: Desenvolvimento Web com CakePHP

MVC

Browser Controler

O Controller renderiza a View correspondente e apresenta os dados

recuperados

Model

DB

View

Page 33: Desenvolvimento Web com CakePHP

MVC, porque usar?

Page 34: Desenvolvimento Web com CakePHP

MVC, porque usar?

• Base funcional e organizacional da aplicação

Page 35: Desenvolvimento Web com CakePHP

MVC, porque usar?

• Base funcional e organizacional da aplicação

• Conjunto de ferramentas (validação, múltiplos DBs, etc)

Page 36: Desenvolvimento Web com CakePHP

MVC, porque usar?

• Base funcional e organizacional da aplicação

• Conjunto de ferramentas (validação, múltiplos DBs, etc)

• Aplicação escalável

Page 37: Desenvolvimento Web com CakePHP

MVC, porque usar?

• Base funcional e organizacional da aplicação

• Conjunto de ferramentas (validação, múltiplos DBs, etc)

• Aplicação escalável

• Desenvolvimento em paralelo

Page 38: Desenvolvimento Web com CakePHP

CakePHP

Page 39: Desenvolvimento Web com CakePHP

O que é o CakePHP?

Page 40: Desenvolvimento Web com CakePHP

O que é o CakePHP?

• O CakePHP é um Framework Php que visa o desenvolvimento ágil de aplicações usando os padrões MVC e ORM.

Page 41: Desenvolvimento Web com CakePHP

CakePHP: Vantagens

Page 42: Desenvolvimento Web com CakePHP

CakePHP: Vantagens

• Compatível com Php 4 e 5

Page 43: Desenvolvimento Web com CakePHP

CakePHP: Vantagens

• Compatível com Php 4 e 5

• Curva de aprendizado alta

Page 44: Desenvolvimento Web com CakePHP

CakePHP: Vantagens

• Compatível com Php 4 e 5

• Curva de aprendizado alta

• Possui CRUD (Create-Read-Update-Delete) integrado

Page 45: Desenvolvimento Web com CakePHP

CakePHP: Vantagens

• Compatível com Php 4 e 5

• Curva de aprendizado alta

• Possui CRUD (Create-Read-Update-Delete) integrado

• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite, SQL Server, Oracle, OBDC, Firebird)

Page 46: Desenvolvimento Web com CakePHP

CakePHP: Vantagens

• Compatível com Php 4 e 5

• Curva de aprendizado alta

• Possui CRUD (Create-Read-Update-Delete) integrado

• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite, SQL Server, Oracle, OBDC, Firebird)

• Componentes nativos para Email, Sessão, Criptografia, Autorização, ACL, etc

Page 47: Desenvolvimento Web com CakePHP

CakePHP: Vantagens

• Compatível com Php 4 e 5

• Curva de aprendizado alta

• Possui CRUD (Create-Read-Update-Delete) integrado

• Compatível com vários Bancos de Dados (MySQL, Postgres, SQLite, SQL Server, Oracle, OBDC, Firebird)

• Componentes nativos para Email, Sessão, Criptografia, Autorização, ACL, etc

• Internacionalização

Page 48: Desenvolvimento Web com CakePHP

CakePHP: Instalando

https://github.com/sergiovilar/minicurso-cakephp

Page 49: Desenvolvimento Web com CakePHP

CakePHP: Instalando

• CakePHP com login de usuários já desenvolvido, baseado no artigo:http://book.cakephp.org/2.0/pt/tutorials-and-examples/blog-auth-example/auth.html

• O CakePHP também pode ser baixado pelo site oficial:http://cakephp.org

Page 50: Desenvolvimento Web com CakePHP

CakePHP: Instalando

• Extraia o .zip e copie para a pasta C:\xampp\htdocs

• Renomeie a pasta para “minicurso-cakephp”

Page 51: Desenvolvimento Web com CakePHP

CakePHP: Instalando

• Acesse: http://localhost/phpMyAdmin e crie um banco de dados chamado cake_minicurso

• Abra o arquivo C:\xampp\htdocs\minicurso-cakephp\app\Config\database.php e configure o acesso ao banco de dados:

• Login: root

• Password: (vazia)

• Database: cake_minicurso

Page 52: Desenvolvimento Web com CakePHP

CakePHP: Instalando

• Certifique-se de que seu servidor Apache está ligado

• Teste acessando http://localhost/minicurso-cakephp

Page 53: Desenvolvimento Web com CakePHP

Mão na massa!

Page 54: Desenvolvimento Web com CakePHP

O que vamos fazer?

• Um blog simples onde usuários deslogados poderão acessar a home do blog e as internas dos posts

• Apenas usuários logados poderão cadastrar e editar posts

Page 55: Desenvolvimento Web com CakePHP

Configurando o banco

• Importe o arquivo minicurso.sql para o banco de dados na aplicação através do phpMyAdmin

Page 56: Desenvolvimento Web com CakePHP

Uma nota sobre Convenções

• O Cake possui Convenção sobre configuração, ou seja, uma série de regras são seguidas para que o desenvolvedor se preocupe apenas com o que realmente importa

Page 57: Desenvolvimento Web com CakePHP

Uma nota sobre Convenções

• O Cake possui Convenção sobre configuração, ou seja, uma série de regras são seguidas para que o desenvolvedor se preocupe apenas com o que realmente importa

• O Cake faz o uso de convenções para nomear as tabelas do banco, modelos, controllers e views. Veremos como isso funciona:

Page 58: Desenvolvimento Web com CakePHP

Uma nota sobre Convenções

• O Cake possui Convenção sobre configuração, ou seja, uma série de regras são seguidas para que o desenvolvedor se preocupe apenas com o que realmente importa

• O Cake faz o uso de convenções para nomear as tabelas do banco, modelos, controllers e views. Veremos como isso funciona:

• Tabela: posts (sempre no plural)

• Model: Post

• Controller: PostsController

• View: Posts

Page 59: Desenvolvimento Web com CakePHP

Criando o primeiro Model

app/Model/Post.php

<?php

class Post extends AppModel { public $name = 'Post';

}

?>

Page 60: Desenvolvimento Web com CakePHP

Criando o primeiro Controller

app/Controller/PostsController.php

<?phpclass PostsController extends AppController{!

! var $uses = 'Post';! var $scaffold;

}

?>

Page 61: Desenvolvimento Web com CakePHP

Criando o primeiro Controller

app/Controller/PostsController.php

<?phpclass PostsController extends AppController{!

! var $uses = 'Post';! var $scaffold;

}

?>

Model

Page 62: Desenvolvimento Web com CakePHP

Criando o primeiro Controller

app/Controller/PostsController.php

<?phpclass PostsController extends AppController{!

! var $uses = 'Post';! var $scaffold;

}

?>

O que é isso?

Page 63: Desenvolvimento Web com CakePHP

Scaffold

• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-Update-Delete) do nosso Controller

Page 64: Desenvolvimento Web com CakePHP

Scaffold

• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-Update-Delete) do nosso Controller

• Vantagens:

• É rápido e fácil

• Ótimo para prototipar aplicações

Page 65: Desenvolvimento Web com CakePHP

Scaffold

• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-Update-Delete) do nosso Controller

• Vantagens:

• É rápido e fácil

• Ótimo para prototipar aplicações

• Desvantagens:

• Não é flexível

• Baixa segurança

Page 66: Desenvolvimento Web com CakePHP

Vamos testar?

Acesse http://localhost/minicurso-cakephp/posts/add

ControllerAplicação Método

Page 67: Desenvolvimento Web com CakePHP

Vamos testar?

Acesse http://localhost/minicurso-cakephp/posts/add

Page 68: Desenvolvimento Web com CakePHP

Então, qualquer um pode cadastrar posts?

Por enquanto sim, vamos adicionar ao nosso PostsController o método que limita o acesso a apenas usuários logados:

Page 69: Desenvolvimento Web com CakePHP

Então, qualquer um pode cadastrar posts?

Por enquanto sim, vamos adicionar ao nosso PostsController o método que limita o acesso a apenas usuários logados:

public function beforeFilter() {

parent::beforeFilter();$this->Auth->allow('blog', 'v');

}

Page 70: Desenvolvimento Web com CakePHP

Então, qualquer um pode cadastrar posts?

Por enquanto sim, vamos adicionar ao nosso PostsController o método que limita o acesso a apenas usuários logados:

public function beforeFilter() {

parent::beforeFilter();$this->Auth->allow('blog', 'v');

}

“blog” e “v” serão os métodos acessíveis aos visitantes do nosso blog.

Page 71: Desenvolvimento Web com CakePHP

Criando o método “blog”

Adicione o método no PostsController:

public function blog(){ ! this->layout = 'blog';

$this->set('posts', $this->Post->find('all'));

}

Page 72: Desenvolvimento Web com CakePHP

Criando o método “blog”

Adicione o método no PostsController:

public function blog(){ ! this->layout = 'blog';

$this->set('posts', $this->Post->find('all'));

}

Usa o layout customizado que está em View/Layouts/blog.ctp

Page 73: Desenvolvimento Web com CakePHP

Criando o método “blog”

Adicione o método no PostsController:

public function blog(){ ! this->layout = 'blog';

$this->set('posts', $this->Post->find('all'));

}

Busca os posts e os coloca na variável $posts para que a view possa receber.

Page 74: Desenvolvimento Web com CakePHP

Criando a view “blog”

app/View/Posts/blog.ctp

<?php foreach($posts as $post): ?>

<h2> ! <?php echo $this->html->link( ! ! ! $post['Post']['titulo'], ! ! ! '/posts/v/'.$post['Post']['id']); ! ?> </h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>

<?php endforeach; ?>

Page 75: Desenvolvimento Web com CakePHP

Criando a view “blog”

app/View/Posts/blog.ctp

<?php foreach($posts as $post): ?>

<h2> ! <?php echo $this->html->link( ! ! ! $post['Post']['titulo'], ! ! ! '/posts/v/'.$post['Post']['id']); ! ?> </h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>

<?php endforeach; ?>

Percorre a array de posts

Page 76: Desenvolvimento Web com CakePHP

Criando a view “blog”

app/View/Posts/blog.ctp

<?php foreach($posts as $post): ?>

<h2> ! <?php echo $this->html->link( ! ! ! $post['Post']['titulo'], ! ! ! '/posts/v/'.$post['Post']['id']); ! ?> </h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>

<?php endforeach; ?>

Cria um link para a página interna do post

Page 77: Desenvolvimento Web com CakePHP

Criando a view “blog”

app/View/Posts/blog.ctp

<?php foreach($posts as $post): ?>

<h2> ! <?php echo $this->html->link( ! ! ! $post['Post']['titulo'], ! ! ! '/posts/v/'.$post['Post']['id']); ! ?> </h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>

<?php endforeach; ?>

Acesse:http://localhost/minicurso-cakephp/posts/blog

Page 78: Desenvolvimento Web com CakePHP

Criando o método “v”

Adicione o método no PostsController:

public function v($id = null){

$this->layout = 'blog';

$this->Post->id = $id; $this->set('post', $this->Post->read());

}

Page 79: Desenvolvimento Web com CakePHP

Criando o método “v”

Adicione o método no PostsController:

public function v($id = null){

$this->layout = 'blog';

$this->Post->id = $id; $this->set('post', $this->Post->read());

}

Recebe a ID do post requisitado

Page 80: Desenvolvimento Web com CakePHP

Criando o método “v”

Adicione o método no PostsController:

public function v($id = null){

$this->layout = 'blog';

$this->Post->id = $id; $this->set('post', $this->Post->read());

}

Busca no model e coloca dentro da variável $post

Page 81: Desenvolvimento Web com CakePHP

Criando a view “v”

app/View/Posts/v.ctp

<h2><?php echo $post['Post']['titulo']; ?></h2> <p>Postado em <?php echo $post['Post']['data']; ?></p> <div><?php echo $post['Post']['conteudo']; ?></div>

Acesse:http://localhost/minicurso-cakephp/posts/blog

Page 84: Desenvolvimento Web com CakePHP

Exercício

Tomando como base o exemplo do blog, crie um Model, um Controller com CRUD e listagem tomando como base a tabela events.