Desenvolvimento Web com CakePHP

Post on 05-Dec-2014

3.080 views 5 download

description

 

Transcript of Desenvolvimento Web com CakePHP

Desenvolvimento Web com CakePHPSérgio VilarDesenvolvedor de Interfaces, Redesoft

Agenda

• Pré-requisitos para este minicurso

• Frameworks

• MVC

• CakePHP

• Mão na massa

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

Frameworks

O que é um framework?

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

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:

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

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

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

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

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

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

Porque usar um Framework?

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

• Código orientado a objetos e organizado

Porque usar um Framework?

• Estabelecimento de um padrão de desenvolvimento

• Código orientado a objetos e organizado

• Consequentemente, manutenção mais fácil

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)

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)

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)

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)

Principais Frameworks PHP

• Yii

• CodeIgniter

• CakePHP

• Zend

• Symfony

Fonte: phpframeworks.com

MVC

MVC

• Padrão de projetos

MVC

• Padrão de projetos

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

MVC

• Padrão de projetos

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

Model

Interação com o banco

MVC

• Padrão de projetos

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

Model

View

Interação com o banco

Interface da aplicação

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

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?

MVC

Browser Controler

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

MVC

Browser Controler

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

Model

MVC

Browser Controler

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

Controller

Model

DB

MVC

Browser Controler

O Controller renderiza a View correspondente e apresenta os dados

recuperados

Model

DB

View

MVC, porque usar?

MVC, porque usar?

• Base funcional e organizacional da aplicação

MVC, porque usar?

• Base funcional e organizacional da aplicação

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

MVC, porque usar?

• Base funcional e organizacional da aplicação

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

• Aplicação escalável

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

CakePHP

O que é o 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.

CakePHP: Vantagens

CakePHP: Vantagens

• Compatível com Php 4 e 5

CakePHP: Vantagens

• Compatível com Php 4 e 5

• Curva de aprendizado alta

CakePHP: Vantagens

• Compatível com Php 4 e 5

• Curva de aprendizado alta

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

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)

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

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

CakePHP: Instalando

https://github.com/sergiovilar/minicurso-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

CakePHP: Instalando

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

• Renomeie a pasta para “minicurso-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

CakePHP: Instalando

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

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

Mão na massa!

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

Configurando o banco

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

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

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:

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

Criando o primeiro Model

app/Model/Post.php

<?php

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

}

?>

Criando o primeiro Controller

app/Controller/PostsController.php

<?phpclass PostsController extends AppController{!

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

}

?>

Criando o primeiro Controller

app/Controller/PostsController.php

<?phpclass PostsController extends AppController{!

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

}

?>

Model

Criando o primeiro Controller

app/Controller/PostsController.php

<?phpclass PostsController extends AppController{!

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

}

?>

O que é isso?

Scaffold

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

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

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

Vamos testar?

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

ControllerAplicação Método

Vamos testar?

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

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:

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');

}

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.

Criando o método “blog”

Adicione o método no PostsController:

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

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

}

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

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.

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; ?>

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

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

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

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());

}

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

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

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

Exercício

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

É isso aí, até a próxima!vilar@me.comhttp://about.me/vilarhttp://slideshare.net/sergiovilarhttp://github.com/sergiovilar