Desenvolvimento Web com CakePHP

4,270 views

Published on

Published in: Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,270
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
161
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Desenvolvimento Web com CakePHP

  1. 1. Desenvolvimento Webcom CakePHPSérgio VilarDesenvolvedor de Interfaces, Redesoft
  2. 2. Agenda• Pré-requisitos para este minicurso• Frameworks• MVC• CakePHP• Mão na massa
  3. 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é...
  4. 4. Frameworks
  5. 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. 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. 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. 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. 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. 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. 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. 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
  13. 13. Porque usar um Framework?
  14. 14. Porque usar um Framework?• Estabelecimento de um padrão de desenvolvimento
  15. 15. Porque usar um Framework?• Estabelecimento de um padrão de desenvolvimento• Código orientado a objetos e organizado
  16. 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. 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. 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. 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. 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)
  21. 21. Principais Frameworks PHP• Yii• CodeIgniter• CakePHP• Zend• SymfonyFonte: phpframeworks.com
  22. 22. MVC
  23. 23. MVC• Padrão de projetos
  24. 24. MVC• Padrão de projetos• Separa a aplicação em três partes:
  25. 25. MVC• Padrão de projetos• Separa a aplicação em três partes: Interação com o banco Model
  26. 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. 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. 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. 29. MVCBrowser Controler O Browser envia uma requisição à aplicação
  30. 30. MVCBrowser Controler Model O Controller processa a requisicão e consulta a lógica de negócio da aplicação
  31. 31. MVCBrowser Controler Model DB O Model acessa o Banco de Dados e recupera os dados requisitados pelo Controller
  32. 32. MVCBrowser Controler Model View DB O Controller renderiza a View correspondente e apresenta os dados recuperados
  33. 33. MVC, porque usar?
  34. 34. MVC, porque usar?• Base funcional e organizacional da aplicação
  35. 35. MVC, porque usar?• Base funcional e organizacional da aplicação• Conjunto de ferramentas (validação, múltiplos DBs, etc)
  36. 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. 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
  38. 38. CakePHP
  39. 39. O que é o CakePHP?
  40. 40. O que é o CakePHP?• O CakePHP é um Framework Php que visa o desenvolvimento ágil de aplicações usando os padrões MVC e ORM.
  41. 41. CakePHP: Vantagens
  42. 42. CakePHP: Vantagens• Compatível com Php 4 e 5
  43. 43. CakePHP: Vantagens• Compatível com Php 4 e 5• Curva de aprendizado alta
  44. 44. CakePHP: Vantagens• Compatível com Php 4 e 5• Curva de aprendizado alta• Possui CRUD (Create-Read-Update-Delete) integrado
  45. 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. 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. 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
  48. 48. CakePHP: Instalandohttps://github.com/sergiovilar/minicurso-cakephp
  49. 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
  50. 50. CakePHP: Instalando• Extraia o .zip e copie para a pasta C:xampphtdocs• Renomeie a pasta para “minicurso-cakephp”
  51. 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
  52. 52. CakePHP: Instalando• Certifique-se de que seu servidor Apache está ligado• Teste acessando http://localhost/minicurso-cakephp
  53. 53. Mão na massa!
  54. 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. 55. Configurando o banco• Importe o arquivo minicurso.sql para o banco de dados na aplicação através do phpMyAdmin
  56. 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. 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. 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. 59. Criando o primeiro Modelapp/Model/Post.php <?php class Post extends AppModel { public $name = Post; } ?>
  60. 60. Criando o primeiro Controllerapp/Controller/PostsController.php <?php class PostsController extends AppController{! ! var $uses = Post; ! var $scaffold; } ?>
  61. 61. Criando o primeiro Controllerapp/Controller/PostsController.php <?php class PostsController extends AppController{! ! var $uses = Post; Model ! var $scaffold; } ?>
  62. 62. Criando o primeiro Controllerapp/Controller/PostsController.php <?php class PostsController extends AppController{! ! var $uses = Post; ! var $scaffold; O que é isso? } ?>
  63. 63. Scaffold• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read- Update-Delete) do nosso Controller
  64. 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. 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
  66. 66. Vamos testar?Acesse http://localhost/minicurso-cakephp/posts/add Aplicação Controller Método
  67. 67. Vamos testar?Acesse http://localhost/minicurso-cakephp/posts/add
  68. 68. Então, qualquer um pode cadastrar posts?Por enquanto sim, vamos adicionar ao nosso PostsController o métodoque limita o acesso a apenas usuários logados:
  69. 69. Então, qualquer um pode cadastrar posts?Por enquanto sim, vamos adicionar ao nosso PostsController o métodoque limita o acesso a apenas usuários logados: public function beforeFilter() { parent::beforeFilter(); $this->Auth->allow(blog, v); }
  70. 70. Então, qualquer um pode cadastrar posts?Por enquanto sim, vamos adicionar ao nosso PostsController o métodoque 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 aosvisitantes do nosso blog.
  71. 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. 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. 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.
  74. 74. 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; ?>
  75. 75. Criando a view “blog”app/View/Posts/blog.ctp Percorre a array de posts <?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; ?>
  76. 76. Criando a view “blog”app/View/Posts/blog.ctp Cria um link para a página interna do post <?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; ?>
  77. 77. 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
  78. 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. 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. 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()); }
  81. 81. 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
  82. 82. Pronto!Nosso blog está pronto, acesse http://localhost/minicurso-cakephp/posts/blog e teste novamente.
  83. 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 serbaixados em:https://github.com/sergiovilar/minicurso-cakephp/archive/desenvolvimento.zip
  84. 84. ExercícioTomando como base o exemplo do blog, crie um Model, um Controllercom CRUD e listagem tomando como base a tabela events.
  85. 85. É isso aí, até a próxima!vilar@me.comhttp://about.me/vilarhttp://slideshare.net/sergiovilarhttp://github.com/sergiovilar

×