CakePHP - Aprendendo a fazer o primeiro bolo

25,378 views

Published on

Published in: Technology
3 Comments
25 Likes
Statistics
Notes
  • 2-
    Venham conferir o AS NOVIDADES DO SERVIDOR de MU online JOGANDO.NET : www.jogando.net/mu
    NÃO PERCA O novo site de Animes Cloud : http://www.animescloud.com/ com mais de 20.000 videos online.
    Curta também a nossa pagina no facebook : http://www.facebook.com/pages/jogandonet/371027529618526
    1ª Mega Maratona Jogando.net eventos diarios e novidades em todos os servidores atualizados p/ o Ep 3 Season 6 com novos kits DEVASTATOR , e o SUPREMO DIAMOND v2.
    By: MissDeath
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • cara, na página 109 tem um erro:

    function add(){
    if(!empty($this->data)){ //não é $data e sim data, ok?
    if($this->Post->save($this->data)){
    $this->flash('O post foi salvo.','/posts');
    }
    }
    }

    Se puder corrigir...mas fora isso tá show de bola, to aprendendo muito com essa 'aula' ai!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • perfeito!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
25,378
On SlideShare
0
From Embeds
0
Number of Embeds
7,296
Actions
Shares
0
Downloads
1,081
Comments
3
Likes
25
Embeds 0
No embeds

No notes for slide

CakePHP - Aprendendo a fazer o primeiro bolo

  1. 1. CakePHP Aprendendo a fazer o primeiro bolo por Léo Hackin
  2. 2. Cardápio Roteiro O PHP ontem e hoje Lógica x Apresentação MVC CakePHP Aplicação exemplo: Blog Conclusões
  3. 3. Mamma mia! Pratos do dia PHP à Carbonara Lógica misturada a apresentação
  4. 4. Eita nóis! Pratos do dia Sistema Ovo-Cozido Rápido, fácil mas sempre fede no fim
  5. 5. Oxente! Pratos do dia Arrumadinho MVC Modelo-Visão-Controlador
  6. 6. Agora sim... Pratos do dia E para sobremesa ... BOLO!
  7. 7. Sobre o cozinheiro Léo Hackin Léo Hackin é desenvolvedor desde 96 e já passou por algumas das principais empresas de internet capixabas, desenvolvendo soluções para internet, dispositivos móveis e desktop. Apaixonado por PHP a 7 anos, atualmente trabalha como analista de soluções JavaEE para attPS Tech (São Paulo) e como Consultor em soluções para internet em empresas privadas.
  8. 8. O PHP ontem e hoje O PHP ontem
  9. 9. O PHP ontem e hoje O PHP ontem Linguagem para apps simples
  10. 10. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões
  11. 11. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões Baixa remuneração
  12. 12. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões Baixa remuneração Consistência discutível
  13. 13. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões Baixa remuneração Consistência discutível Falta de padrões de design
  14. 14. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões Baixa remuneração Consistência discutível Falta de padrões de design
  15. 15. O PHP ontem e Hoje Agravantes
  16. 16. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação
  17. 17. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação Rápido == feito nas coxas
  18. 18. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação Rápido == feito nas coxas Paradigma mal resolvido (Estrutural x OO)
  19. 19. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação Rápido == feito nas coxas Paradigma mal resolvido (Estrutural x OO) Script Kiddies, sobrinhos e “amigos que mexem com informática”
  20. 20. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação Rápido == feito nas coxas Paradigma mal resolvido (Estrutural x OO) Script Kiddies, sobrinhos e “amigos que mexem com informática” Herança estrutural: funções redundantes, includes, etc ...
  21. 21. O PHP ontem e Hoje O PHP hoje
  22. 22. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas
  23. 23. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro
  24. 24. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro Remuneração “de gente”
  25. 25. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro Remuneração “de gente” Montes e montes de documentação
  26. 26. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro Remuneração “de gente” Montes e montes de documentação N projetos ... FRAMEWORKS!
  27. 27. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro Remuneração “de gente” Montes e montes de documentação O tempo passa! O tempo voa! N projetos ... FRAMEWORKS!
  28. 28. Lógica x Apresentação PHP gerando HTML
  29. 29. Lógica x Apresentação PHP espaguete
  30. 30. Lógica x Apresentação PHP espaguete
  31. 31. Lógica x Apresentação Ops... Problemas! Codificação e manutenção custosa Quebra pau com designers Redundância de métodos, funções, includes ... Despadronização é ruim!!! Segmentação da lógica
  32. 32. Lógica x Apresentação Ops... Problemas! PHP à Carbonara
  33. 33. Lógica x Apresentação Ops... Problemas! = PHP à Carbonara
  34. 34. MVC O que é MVC
  35. 35. MVC O que é MVC Padrão de arquitetura de software
  36. 36. MVC O que é MVC Padrão de arquitetura de software Separação da aplicação em três partes:
  37. 37. MVC O que é MVC Padrão de arquitetura de software Separação da aplicação em três partes: Os dados da aplicação
  38. 38. MVC O que é MVC Padrão de arquitetura de software Separação da aplicação em três partes: Os dados da aplicação A apresentação da informação
  39. 39. MVC O que é MVC Padrão de arquitetura de software Separação da aplicação em três partes: Processa os eventos da aplicação Os dados da aplicação A apresentação da informação
  40. 40. MVC Características
  41. 41. MVC Características Base funcional para toda a aplicação
  42. 42. MVC Características Base funcional para toda a aplicação Conjunto de ferramentas, classes ...
  43. 43. MVC Características Base funcional para toda a aplicação Conjunto de ferramentas, classes ... Consistência e produtividade
  44. 44. MVC Características Base funcional para toda a aplicação Conjunto de ferramentas, classes ... Consistência e produtividade Desenvolvimento em paralelo
  45. 45. MVC Características Base funcional para toda a aplicação Conjunto de ferramentas, classes ... Consistência e produtividade Desenvolvimento em paralelo Manutenção e escalabilidade menos custosa
  46. 46. MVC Como funciona, tio ?
  47. 47. MVC Como funciona, tio ? Browser envia requisição à aplicação
  48. 48. MVC Como funciona, tio ? Browser envia requisição à aplicação http://site/hello
  49. 49. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação http://site/hello
  50. 50. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação http://site/hello
  51. 51. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller Mysql, Postgres, Oracle e muitos outros http://site/hello
  52. 52. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller O controller então seleciona a view correspondente a ação Mysql, Postgres, Oracle e muitos outros http://site/hello
  53. 53. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller O controller então seleciona a view correspondente a ação O controller renderiza a view Mysql, Postgres, incluindo os dados de resposta Oracle e muitos da ação outros http://site/hello
  54. 54. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller O controller então seleciona a view correspondente a ação O controller renderiza a view Mysql, Postgres, incluindo os dados de resposta Oracle e muitos da ação outros O controller devolve a resposta para o browser http://site/hello
  55. 55. MVC Frameworks PHP
  56. 56. CakePHP O que é CakePHP CakePHP é um framework de desenvolvimento rápido para PHP que provê uma arquitetura extensível para desenvolvimento, manutenção e implantação de aplicacões. Usando padrões de projeto como MVC e ORM com “convenção ao invés de configuração”, o CakePHP reduz custos de desenvolvimento e ajuda desenvolvedores a “escrever menos código”.
  57. 57. CakePHP O que é CakePHP
  58. 58. CakePHP O que é CakePHP Compatível com PHP 4 e 5
  59. 59. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC
  60. 60. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros
  61. 61. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ...
  62. 62. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado
  63. 63. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado ActiveRecord (ORM)
  64. 64. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado ActiveRecord (ORM) Internacionalização
  65. 65. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado ActiveRecord (ORM) Internacionalização Comunidade ativa e crescente
  66. 66. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado ActiveRecord (ORM) Ativa e crescente ? NOFA! Internacionalização Eu quero! Comunidade ativa e crescente
  67. 67. CakePHP Requisitos mínimos Um computador =) Servidor HTTP (Apache 2) PHP4 ou PHP5 Base de dados (opcional) MySQL, Postgres, SQL Server, Oracle, SQLite, ODBC, ADOdb, Firebird DB2 Café, chá ou suco (opcional)
  68. 68. CakePHP Instalando Baixar o CakePHP (http://cakephp.org) Descompactar o arquivo em seu servidor web
  69. 69. CakePHP Instalando Configurar o http.conf
  70. 70. CakePHP Instalando Configurar o http.conf
  71. 71. CakePHP Instalando Configurar o http.conf
  72. 72. CakePHP Instalando Configurar o http.conf
  73. 73. CakePHP Instalando Configurar o http.conf
  74. 74. CakePHP Instalando Execute e teste!
  75. 75. CakePHP Estrutura Funcional
  76. 76. CakePHP Estrutura Funcional
  77. 77. CakePHP Estrutura Funcional Model View Controller
  78. 78. CakePHP Estrutura Funcional Model Behaviors e Datasources View Helpers e Elements Controller Components
  79. 79. CakePHP Estrutura de Arquivos
  80. 80. CakePHP Estrutura de Arquivos config - configuração da app (banco, conf. núcleo, etc) controllers - controles da app locale - strings de internacionalização models - modelos da app plugins - pacotes de plugins tmp - local de arquivos temporários vendors - aplicativos de terceiros views - views do sistema webroot - raiz da aplicação
  81. 81. CakePHP Estrutura de Arquivos config - configuração da app (banco, conf. núcleo, etc) controllers - controles da app locale - strings de internacionalização models - modelos da app plugins - pacotes de plugins tmp - local de arquivos temporários vendors - aplicativos de terceiros views - views do sistema webroot - raiz da aplicação
  82. 82. Aplicação exemplo: Blog O primeiro bolo Aplicação de blog Listar Inserir Editar Deletar O primeiro a gente NUNCA esquece ...
  83. 83. Aplicação exemplo: Blog Conf. base no Cake app/config/database.php.default app/config/database.php
  84. 84. Aplicação exemplo: Blog Criando o model Criar tabela na database escolhida
  85. 85. Aplicação exemplo: Blog Criando o model app/models/post.php
  86. 86. Aplicação exemplo: Blog Convenções MODEL Nome da tabela SEMPRE no plural (ex.: model post -> tabela posts) Toda tabela deve possuir a chave primária id (auto-numérica ou com 36 caracteres) CONTROLLER Nome SEMPRE no plural (ex.: model post -> controller posts) Nome do arquivo no padrão <model no plural>_controller.php
  87. 87. Aplicação exemplo: Blog Criando o controller app/controllers/posts_controller.php
  88. 88. Aplicação exemplo: Blog Criando uma views app/views/posts/index.ctp - listagem dos posts
  89. 89. Aplicação exemplo: Blog Criando uma views app/views/posts/index.ctp - listagem dos posts helper $html->link
  90. 90. Aplicação exemplo: Blog Acessando a ação http://localhost/posts
  91. 91. Aplicação exemplo: Blog Acessando a ação http://localhost/posts host
  92. 92. Aplicação exemplo: Blog Acessando a ação controller http://localhost/posts host
  93. 93. Aplicação exemplo: Blog Executando a ação
  94. 94. Aplicação exemplo: Blog Adicionando ações app/controllers/posts_controller.php
  95. 95. Aplicação exemplo: Blog Adicionando ações app/views/posts/view.ctp
  96. 96. Aplicação exemplo: Blog Acessando a ação http://localhost/posts/view/2
  97. 97. Aplicação exemplo: Blog Acessando a ação http://localhost/posts/view/2 host
  98. 98. Aplicação exemplo: Blog Acessando a ação controller http://localhost/posts/view/2 host
  99. 99. Aplicação exemplo: Blog Acessando a ação controller ação http://localhost/posts/view/2 host
  100. 100. Aplicação exemplo: Blog Acessando a ação controller ação http://localhost/posts/view/2 host ID
  101. 101. Aplicação exemplo: Blog Adicionando ações
  102. 102. Aplicação exemplo: Blog Modificando o layout Layout View Elements
  103. 103. Aplicação exemplo: Blog Modificando o layout Layout View Elements
  104. 104. Aplicação exemplo: Blog Modificando o layout Layout View Elements
  105. 105. Aplicação exemplo: Blog Modificando o layout Layout View Elements
  106. 106. Aplicação exemplo: Blog Modificando o layout
  107. 107. Aplicação exemplo: Blog Modificando o layout conteúdo da view
  108. 108. Aplicação exemplo: Blog Modificando o layout Antes Depois
  109. 109. Aplicação exemplo: Blog Adicionando um post app/controllers/posts_controller.php
  110. 110. Aplicação exemplo: Blog Adicionando um post app/views/posts/add.ctp
  111. 111. Aplicação exemplo: Blog Adicionando um post app/views/posts/add.ctp FormHelper
  112. 112. Aplicação exemplo: Blog Adicionando um post app/views/posts/index.ctp
  113. 113. Aplicação exemplo: Blog Adicionando um post app/views/posts/index.ctp
  114. 114. Aplicação exemplo: Blog Adicionando um post
  115. 115. Aplicação exemplo: Blog Validação de campos app/models/post.php
  116. 116. Aplicação exemplo: Blog Validação de campos app/models/post.php validação
  117. 117. Aplicação exemplo: Blog Validação de campos
  118. 118. Aplicação exemplo: Blog Validação de campos
  119. 119. Aplicação exemplo: Blog Deletando um post app/controllers/posts_controller.php
  120. 120. Aplicação exemplo: Blog Deletando um post app/views/posts/index.ctp
  121. 121. Aplicação exemplo: Blog Deletando um post app/views/posts/index.ctp confirma a operação
  122. 122. Aplicação exemplo: Blog Deletando um post
  123. 123. Aplicação exemplo: Blog Editando um post app/controllers/posts_controller.php
  124. 124. Aplicação exemplo: Blog Editando um post app/views/posts/edit.ctp
  125. 125. Aplicação exemplo: Blog Editando um post app/views/posts/edit.ctp
  126. 126. Aplicação exemplo: Blog Editando um post app/views/posts/index.ctp
  127. 127. Aplicação exemplo: Blog Editando um post app/views/posts/index.ctp e tome helper
  128. 128. Aplicação exemplo: Blog Editando um post
  129. 129. Extras CRUD e Scaffolding app/model/comment.php app/model/comment.php
  130. 130. Extras CRUD via Scaffolding Vantagens Desvantagens
  131. 131. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Desvantagens
  132. 132. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Pode ser usado numa app em producão Desvantagens
  133. 133. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Pode ser usado numa app em producão Mamão com açucar!! Desvantagens
  134. 134. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Pode ser usado numa app em producão Mamão com açucar!! Desvantagens Não foi feito para ser flexível
  135. 135. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Pode ser usado numa app em producão Mamão com açucar!! Desvantagens Não foi feito para ser flexível Baixa segurança (em seu estado default)
  136. 136. Extras CRUD via Bake $ cd ./cake/console $ ./cake bake
  137. 137. Extras CRUD via Bake Vantagens Desvantagens
  138. 138. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Desvantagens
  139. 139. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Ao contrário do scaffold, cria arquivos reais na app Desvantagens
  140. 140. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Ao contrário do scaffold, cria arquivos reais na app Extremamente poderoso e funcional Desvantagens
  141. 141. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Ao contrário do scaffold, cria arquivos reais na app Extremamente poderoso e funcional Permite configurar os modelos Desvantagens
  142. 142. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Ao contrário do scaffold, cria arquivos reais na app Extremamente poderoso e funcional Permite configurar os modelos Desvantagens Acostuma mal! :)
  143. 143. Fechando o buteco Conclusões
  144. 144. Fechando o buteco Conclusões Fácil de codificar
  145. 145. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade
  146. 146. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold)
  147. 147. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold) Arquitetura consistente e flexível
  148. 148. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold) Arquitetura consistente e flexível Helpers ajudam um bocado
  149. 149. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold) Arquitetura consistente e flexível Helpers ajudam um bocado Codificação limpa, correta e sustentável
  150. 150. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold) Arquitetura consistente e flexível Helpers ajudam um bocado Codificação limpa, correta e sustentável Ei, isso não foi tão ruim afinal.
  151. 151. Fechando o buteco Asta La Vista Baby Léo Hackin e-mail e MSN leohackin@gmail.com Skype leohackin Blog www.leohackin.com.br/blog
  152. 152. F u i ...

×