SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
CakePHP
                                    Aprendendo a fazer o primeiro bolo




                                                                  por Léo Hackin

segunda-feira, 8 de junho de 2009
Cardápio

                                      Roteiro
              O PHP ontem e hoje
              Lógica x Apresentação
              MVC
              CakePHP
              Aplicação exemplo: Blog
              Conclusões

segunda-feira, 8 de junho de 2009
Mamma mia!

                                      Pratos do dia



                                    PHP à Carbonara
                                    Lógica misturada a apresentação




segunda-feira, 8 de junho de 2009
Eita nóis!

                                        Pratos do dia



                                    Sistema Ovo-Cozido
                                    Rápido, fácil mas sempre fede no fim




segunda-feira, 8 de junho de 2009
Oxente!

                                     Pratos do dia



                                    Arrumadinho MVC
                                     Modelo-Visão-Controlador




segunda-feira, 8 de junho de 2009
Agora sim...

                                    Pratos do dia



                                    E para sobremesa ... BOLO!




segunda-feira, 8 de junho de 2009
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 é diretor executivo da Giran
                             Soluções e Ensino, onde trabalha como
                           consultor e especialista em soluções web.



segunda-feira, 8 de junho de 2009
Giran Soluções e Ensino



                                         e
                                                    CSM



                                       ev
                                     br
                     • Consultoria e Treinamento especialidados
                                                 Certified

                                    em
                       • Java
                       • Ruby on Rails       Scrum Master
                       • PHP           Curso e Certificação
                       • Desenvolvimento ágil oficiais
           • Gerenciamento de projetos com SCRUM
           • Profissionais altamente qualificados
           • Participação ativa na comunidade
       Informações e reservas
       contato@giran.com.br
           • http://www.giran.com.br
segunda-feira, 8 de junho de 2009
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



segunda-feira, 8 de junho de 2009
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 ...


segunda-feira, 8 de junho de 2009
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!
                  Adoção por grandes empresas



segunda-feira, 8 de junho de 2009
Lógica x Apresentação

                                    PHP gerando HTML




segunda-feira, 8 de junho de 2009
Lógica x Apresentação

                                    PHP espaguete




segunda-feira, 8 de junho de 2009
Lógica x Apresentação

                                    Ops... Problemas!


                                         X



                  Programadores
                                                   Designers


segunda-feira, 8 de junho de 2009
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



segunda-feira, 8 de junho de 2009
Lógica x Apresentação

                                    Ops... Problemas!

                                         =


                    PHP à Carbonara




segunda-feira, 8 de junho de 2009
Apimentando a vida

                                       MVC




segunda-feira, 8 de junho de 2009
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



segunda-feira, 8 de junho de 2009
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


segunda-feira, 8 de junho de 2009
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


segunda-feira, 8 de junho de 2009
MVC

                                               Frameworks PHP




         fonte: http://www.phpframeworks.com




segunda-feira, 8 de junho de 2009
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”.


segunda-feira, 8 de junho de 2009
CakePHP

                                    Lances Maneiros
                  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

segunda-feira, 8 de junho de 2009
CakePHP

                                               Momento Ui!
                          Ativa e crescente ?

                         NOFA!
                                    Eu quero! :D




segunda-feira, 8 de junho de 2009
CakePHP

                                    Requisitos mínimos
                                                                        Jura ???
                 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)
                                                      Opcional uma ova!!!!

segunda-feira, 8 de junho de 2009
CakePHP

                                       Instalando
                 Baixar o CakePHP (http://cakephp.org)

                 Descompactar o arquivo em seu servidor web




segunda-feira, 8 de junho de 2009
CakePHP

                                         Instalando
                 Configurar o http.conf




segunda-feira, 8 de junho de 2009
CakePHP

                                         Instalando
                 Configurar o http.conf




segunda-feira, 8 de junho de 2009
CakePHP

                                    Instalando
                 Execute e teste!




segunda-feira, 8 de junho de 2009
CakePHP

                                    Estrutura Funcional
                                                     Model
                                                      Behaviors e Datasources


                                                     View
                                                      Helpers e Elements


                                                     Controller
                                                      Components




segunda-feira, 8 de junho de 2009
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




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    O primeiro bolo
    Aplicação de blog

                         Listar
                         Inserir
                         Editar
                         Deletar                        O primeiro a gente

                                                       NUNCA
                                                            esquece ...




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Conf. base no Cake
        app/config/database.php.default




        app/config/database.php
segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Criando o model
        Criar tabela na database escolhida




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Criando o model
        app/models/post.php




segunda-feira, 8 de junho de 2009
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




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Criando o controller
        app/controllers/posts_controller.php




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Criando uma views
        app/views/posts/index.ctp - listagem dos posts




                                          helper $html->link

segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Acessando a ação
                                                    controller


               http://localhost/posts

                                           host



segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Executando a ação




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Adicionando ações
        app/controllers/posts_controller.php




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Adicionando ações
        app/views/posts/view.ctp




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Acessando a ação
                                        controller           ação


                 http://localhost/posts/view/2
                                        host                     ID




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Adicionando ações




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Modificando o layout
              Layout

                      View



                                    Elements




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Modificando o layout


                                            /app/views/layouts/default.ctp




                                                 conteúdo da view


segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Modificando o layout
       Antes                                   Depois




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Adicionando um post
     app/controllers/posts_controller.php




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Adicionando um post
     app/views/posts/add.ctp


                                                    FormHelper




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Adicionando um post
     app/views/posts/index.ctp




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Adicionando um post




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Validação de campos
        app/models/post.php


                                                validação




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Validação de campos




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Deletando um post
     app/controllers/posts_controller.php




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Deletando um post
     app/views/posts/index.ctp




                                             confirma a operação




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Deletando um post




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Editando um post
     app/controllers/posts_controller.php




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Editando um post
     app/views/posts/edit.ctp




segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Editando um post
     app/views/posts/index.ctp




                                     e tome helper



segunda-feira, 8 de junho de 2009
Aplicação exemplo: Blog

                                    Editando um post




segunda-feira, 8 de junho de 2009
Extras

                                    CRUD e Scaffolding
       app/model/comment.php




       app/model/comment.php




segunda-feira, 8 de junho de 2009
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)


segunda-feira, 8 de junho de 2009
Extras

                                    CRUD via Bake


       $ cd ./cake/console
       $ ./cake bake




segunda-feira, 8 de junho de 2009
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! :)


segunda-feira, 8 de junho de 2009
Pôlemicas

                                                      O CakePHP é lento
                                                                                   Fato
                                                                        Ele é mais lento que o CI, seu
                                                                            principal concorrente.


                                                                        Porque escolhi ?
                                                                         O CakePHP apresenta uma
                                                                          suite de ferramentas mais
                                                                         robusta e completa que os
                    fonte: http://blog.cakephp-brasil.org
                                                                            outros, como ORM e
                                                                           suporte nativo a testes.




segunda-feira, 8 de junho de 2009
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. :D


segunda-feira, 8 de junho de 2009
Fechando o buteco

                                    Perguntas ???
   A resposta é OBVIA!!!                Não suporto perguntas!




           42
segunda-feira, 8 de junho de 2009
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

segunda-feira, 8 de junho de 2009
F u i ...




segunda-feira, 8 de junho de 2009

Mais conteúdo relacionado

Destaque

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destaque (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Cakephp - Aprendendo a fazer o primeiro bolo

  • 1. CakePHP Aprendendo a fazer o primeiro bolo por Léo Hackin segunda-feira, 8 de junho de 2009
  • 2. Cardápio Roteiro O PHP ontem e hoje Lógica x Apresentação MVC CakePHP Aplicação exemplo: Blog Conclusões segunda-feira, 8 de junho de 2009
  • 3. Mamma mia! Pratos do dia PHP à Carbonara Lógica misturada a apresentação segunda-feira, 8 de junho de 2009
  • 4. Eita nóis! Pratos do dia Sistema Ovo-Cozido Rápido, fácil mas sempre fede no fim segunda-feira, 8 de junho de 2009
  • 5. Oxente! Pratos do dia Arrumadinho MVC Modelo-Visão-Controlador segunda-feira, 8 de junho de 2009
  • 6. Agora sim... Pratos do dia E para sobremesa ... BOLO! segunda-feira, 8 de junho de 2009
  • 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 é diretor executivo da Giran Soluções e Ensino, onde trabalha como consultor e especialista em soluções web. segunda-feira, 8 de junho de 2009
  • 8. Giran Soluções e Ensino e CSM ev br • Consultoria e Treinamento especialidados Certified em • Java • Ruby on Rails Scrum Master • PHP Curso e Certificação • Desenvolvimento ágil oficiais • Gerenciamento de projetos com SCRUM • Profissionais altamente qualificados • Participação ativa na comunidade Informações e reservas contato@giran.com.br • http://www.giran.com.br segunda-feira, 8 de junho de 2009
  • 9. 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 segunda-feira, 8 de junho de 2009
  • 10. 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 ... segunda-feira, 8 de junho de 2009
  • 11. 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! Adoção por grandes empresas segunda-feira, 8 de junho de 2009
  • 12. Lógica x Apresentação PHP gerando HTML segunda-feira, 8 de junho de 2009
  • 13. Lógica x Apresentação PHP espaguete segunda-feira, 8 de junho de 2009
  • 14. Lógica x Apresentação Ops... Problemas! X Programadores Designers segunda-feira, 8 de junho de 2009
  • 15. 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 segunda-feira, 8 de junho de 2009
  • 16. Lógica x Apresentação Ops... Problemas! = PHP à Carbonara segunda-feira, 8 de junho de 2009
  • 17. Apimentando a vida MVC segunda-feira, 8 de junho de 2009
  • 18. 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 segunda-feira, 8 de junho de 2009
  • 19. 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 segunda-feira, 8 de junho de 2009
  • 20. 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 segunda-feira, 8 de junho de 2009
  • 21. MVC Frameworks PHP fonte: http://www.phpframeworks.com segunda-feira, 8 de junho de 2009
  • 22. 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”. segunda-feira, 8 de junho de 2009
  • 23. CakePHP Lances Maneiros 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 segunda-feira, 8 de junho de 2009
  • 24. CakePHP Momento Ui! Ativa e crescente ? NOFA! Eu quero! :D segunda-feira, 8 de junho de 2009
  • 25. CakePHP Requisitos mínimos Jura ??? 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) Opcional uma ova!!!! segunda-feira, 8 de junho de 2009
  • 26. CakePHP Instalando Baixar o CakePHP (http://cakephp.org) Descompactar o arquivo em seu servidor web segunda-feira, 8 de junho de 2009
  • 27. CakePHP Instalando Configurar o http.conf segunda-feira, 8 de junho de 2009
  • 28. CakePHP Instalando Configurar o http.conf segunda-feira, 8 de junho de 2009
  • 29. CakePHP Instalando Execute e teste! segunda-feira, 8 de junho de 2009
  • 30. CakePHP Estrutura Funcional Model Behaviors e Datasources View Helpers e Elements Controller Components segunda-feira, 8 de junho de 2009
  • 31. 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 segunda-feira, 8 de junho de 2009
  • 32. Aplicação exemplo: Blog O primeiro bolo Aplicação de blog Listar Inserir Editar Deletar O primeiro a gente NUNCA esquece ... segunda-feira, 8 de junho de 2009
  • 33. Aplicação exemplo: Blog Conf. base no Cake app/config/database.php.default app/config/database.php segunda-feira, 8 de junho de 2009
  • 34. Aplicação exemplo: Blog Criando o model Criar tabela na database escolhida segunda-feira, 8 de junho de 2009
  • 35. Aplicação exemplo: Blog Criando o model app/models/post.php segunda-feira, 8 de junho de 2009
  • 36. 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 segunda-feira, 8 de junho de 2009
  • 37. Aplicação exemplo: Blog Criando o controller app/controllers/posts_controller.php segunda-feira, 8 de junho de 2009
  • 38. Aplicação exemplo: Blog Criando uma views app/views/posts/index.ctp - listagem dos posts helper $html->link segunda-feira, 8 de junho de 2009
  • 39. Aplicação exemplo: Blog Acessando a ação controller http://localhost/posts host segunda-feira, 8 de junho de 2009
  • 40. Aplicação exemplo: Blog Executando a ação segunda-feira, 8 de junho de 2009
  • 41. Aplicação exemplo: Blog Adicionando ações app/controllers/posts_controller.php segunda-feira, 8 de junho de 2009
  • 42. Aplicação exemplo: Blog Adicionando ações app/views/posts/view.ctp segunda-feira, 8 de junho de 2009
  • 43. Aplicação exemplo: Blog Acessando a ação controller ação http://localhost/posts/view/2 host ID segunda-feira, 8 de junho de 2009
  • 44. Aplicação exemplo: Blog Adicionando ações segunda-feira, 8 de junho de 2009
  • 45. Aplicação exemplo: Blog Modificando o layout Layout View Elements segunda-feira, 8 de junho de 2009
  • 46. Aplicação exemplo: Blog Modificando o layout /app/views/layouts/default.ctp conteúdo da view segunda-feira, 8 de junho de 2009
  • 47. Aplicação exemplo: Blog Modificando o layout Antes Depois segunda-feira, 8 de junho de 2009
  • 48. Aplicação exemplo: Blog Adicionando um post app/controllers/posts_controller.php segunda-feira, 8 de junho de 2009
  • 49. Aplicação exemplo: Blog Adicionando um post app/views/posts/add.ctp FormHelper segunda-feira, 8 de junho de 2009
  • 50. Aplicação exemplo: Blog Adicionando um post app/views/posts/index.ctp segunda-feira, 8 de junho de 2009
  • 51. Aplicação exemplo: Blog Adicionando um post segunda-feira, 8 de junho de 2009
  • 52. Aplicação exemplo: Blog Validação de campos app/models/post.php validação segunda-feira, 8 de junho de 2009
  • 53. Aplicação exemplo: Blog Validação de campos segunda-feira, 8 de junho de 2009
  • 54. Aplicação exemplo: Blog Deletando um post app/controllers/posts_controller.php segunda-feira, 8 de junho de 2009
  • 55. Aplicação exemplo: Blog Deletando um post app/views/posts/index.ctp confirma a operação segunda-feira, 8 de junho de 2009
  • 56. Aplicação exemplo: Blog Deletando um post segunda-feira, 8 de junho de 2009
  • 57. Aplicação exemplo: Blog Editando um post app/controllers/posts_controller.php segunda-feira, 8 de junho de 2009
  • 58. Aplicação exemplo: Blog Editando um post app/views/posts/edit.ctp segunda-feira, 8 de junho de 2009
  • 59. Aplicação exemplo: Blog Editando um post app/views/posts/index.ctp e tome helper segunda-feira, 8 de junho de 2009
  • 60. Aplicação exemplo: Blog Editando um post segunda-feira, 8 de junho de 2009
  • 61. Extras CRUD e Scaffolding app/model/comment.php app/model/comment.php segunda-feira, 8 de junho de 2009
  • 62. 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) segunda-feira, 8 de junho de 2009
  • 63. Extras CRUD via Bake $ cd ./cake/console $ ./cake bake segunda-feira, 8 de junho de 2009
  • 64. 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! :) segunda-feira, 8 de junho de 2009
  • 65. Pôlemicas O CakePHP é lento Fato Ele é mais lento que o CI, seu principal concorrente. Porque escolhi ? O CakePHP apresenta uma suite de ferramentas mais robusta e completa que os fonte: http://blog.cakephp-brasil.org outros, como ORM e suporte nativo a testes. segunda-feira, 8 de junho de 2009
  • 66. 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. :D segunda-feira, 8 de junho de 2009
  • 67. Fechando o buteco Perguntas ??? A resposta é OBVIA!!! Não suporto perguntas! 42 segunda-feira, 8 de junho de 2009
  • 68. 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 segunda-feira, 8 de junho de 2009
  • 69. F u i ... segunda-feira, 8 de junho de 2009