3. 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é...
5. O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
software seja organizado e desenvolvido o tomando como base.
6. 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:
7. 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
8. 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
9. 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
10. 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
11. 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
12. 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
14. Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
15. Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
16. Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
• Consequentemente, manutenção mais fácil
17. 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)
18. 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)
19. 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)
20. 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)
24. MVC
• Padrão de projetos
• Separa a aplicação em três partes:
25. MVC
• Padrão de projetos
• Separa a aplicação em três partes:
Interação com o banco
Model
26. MVC
• Padrão de projetos
• Separa a aplicação em três partes:
Interação com o banco
Model
Interface da aplicação
View
27. MVC
• Padrão de projetos
• Separa a aplicação em três partes:
Interação com o banco
Model
Interface da aplicação Lógica da aplicação
View Controler
28. MVC
• Padrão de projetos
• Separa a aplicação em três partes:
Interação com o banco
Model
Interface da aplicação Lógica da aplicação
View Controler
Como assim, Bial?
29. MVC
Browser Controler
O Browser envia uma requisição à aplicação
30. MVC
Browser Controler
Model
O Controller processa a requisicão e
consulta a lógica de negócio da aplicação
31. MVC
Browser Controler
Model
DB
O Model acessa o Banco de Dados e
recupera os dados requisitados pelo
Controller
32. MVC
Browser Controler
Model
View
DB
O Controller renderiza a View
correspondente e apresenta os dados
recuperados
35. MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
36. MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
• Aplicação escalável
37. 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
44. CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
45. 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)
46. 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
47. 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
49. 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
51. CakePHP: Instalando
• Acesse: http://localhost/phpMyAdmin e crie um banco de dados
chamado cake_minicurso
• Abra o arquivo C:xampphtdocsminicurso-cakephpappConfig
database.php e configure o acesso ao banco de dados:
• Login: root
• Password: (vazia)
• Database: cake_minicurso
54. 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
55. Configurando o banco
• Importe o arquivo minicurso.sql para o banco de dados na aplicação
através do phpMyAdmin
56. 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
57. 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:
58. 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
59. Criando o primeiro Model
app/Model/Post.php
<?php
class Post extends AppModel {
public $name = 'Post';
}
?>
60. Criando o primeiro Controller
app/Controller/PostsController.php
<?php
class PostsController extends AppController{!
! var $uses = 'Post';
! var $scaffold;
}
?>
61. Criando o primeiro Controller
app/Controller/PostsController.php
<?php
class PostsController extends AppController{!
! var $uses = 'Post'; Model
! var $scaffold;
}
?>
62. Criando o primeiro Controller
app/Controller/PostsController.php
<?php
class PostsController extends AppController{!
! var $uses = 'Post';
! var $scaffold;
O que é isso?
}
?>
63. Scaffold
• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-
Update-Delete) do nosso Controller
64. 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
65. 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
68. 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:
69. 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');
}
70. 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.
71. Criando o método “blog”
Adicione o método no PostsController:
public function blog(){
!
this->layout = 'blog';
$this->set('posts', $this->Post->find('all'));
}
72. Criando o método “blog”
Adicione o método no PostsController:
Usa o layout customizado que
está em View/Layouts/blog.ctp
public function blog(){
!
this->layout = 'blog';
$this->set('posts', $this->Post->find('all'));
}
73. 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.
78. 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());
}
79. Criando o método “v”
Adicione o método no PostsController:
public function v($id = null){
$this->layout = 'blog';
Recebe a ID do post requisitado
$this->Post->id = $id;
$this->set('post', $this->Post->read());
}
80. Criando o método “v”
Adicione o método no PostsController:
public function v($id = null){
$this->layout = 'blog'; Busca no model e coloca dentro
da variável $post
$this->Post->id = $id;
$this->set('post', $this->Post->read());
}
82. Pronto!
Nosso blog está pronto, acesse http://localhost/minicurso-cakephp/posts/
blog e teste novamente.
83. Pronto!
Nosso blog está pronto, acesse http://localhost/minicurso-cakephp/posts/
blog e teste novamente.
Os arquivos com todo o código fonte deste minicurso podem ser
baixados em:
https://github.com/sergiovilar/minicurso-cakephp/archive/
desenvolvimento.zip
84. Exercício
Tomando como base o exemplo do blog, crie um Model, um Controller
com CRUD e listagem tomando como base a tabela events.
85. É isso aí, até a próxima!
vilar@me.com
http://about.me/vilar
http://slideshare.net/sergiovilar
http://github.com/sergiovilar