#WTISC2012
Introdução ao
framework CakePHP
      com Igor Pimentel

    www.igorpimentel.com
Quem?
Igor Pimentel
   Sistemas de Informação - UFC
   Notorion - Sites e Sistemas Web
   @igorpimentel
   www.igorpimentel.com
Sites   Sistemas Web
Agenda
    10/MAIO

         Um pouco de blá.. blá.. blá...

         Preparando o ambiente

         Mão na Massa

    11/MAIO

         Mão na Massa

         Bônus*

         Considerações Finais
CakePHP - é de comer?




                              *Foto: http://www.flickr.com/photos/koyhoge


O que é?
CakePHP é um framework PHP, gratuito, de código aberto, para desenvolvimento ágil.
CakePHP - Por que usar?
 Comunidade ativa e amigável            Template flexível e rápido

 Licensa flexível (MIT)                 Helpers para HTML e Formulários,
                                        JavaScript e até AJAX
 CRUD integrado para interação com
 o banco de dados                       Componentes de Email, Cookies,
                                        Segurança, Sessão e manipulação de
 Scaffold de aplicação                  requisições

 Código gerado automáticamente (bake)   Controle de Acesso (ACL)

 Arquitetura MVC                        Multiplas configurações de cache

 URLs amigáveis                         Localização e internacionalização

 Validação de dados                     Roda em qualquer servidor web,
                                        práticamente sem configuração
<,= % %>"4)%"-$?%
        CakePHP - Quem usa?                @$A4BCB!




              "##$%&&'(()'*&+',-$!
               Mais? http://goo.gl/Fg0wp
<,= % %>%?"4%4"%@A%B2C%:0)%4#4D%
      CakePHP - O que fazer?                                      E$F4GHG!


                                   !"#$%&'()*!"#$%$&!
                                   '(()*++,-./0'1234/12+!
                                   !


                                   !"#$%&'(%#%'%&)*)+&'+'$#",%'-+'
                                   ./01+.2'+/'$"-"'"'/)3-"'
                                   !
                                      56.738!93!-:-;<.1!3!692.7!
                                      =1(1:>!?@931:>!26)6!3!!
                                      /68379;<.1!93!9.:)17.A.8.9693!
                                      B)8169!2C8(.)81!/12!A6<<6!93!
                                      )<1D<3::1!3!)<3?.3E!96!F1(1!
                                      G.(3!2-8(.H.9.126!".%I7&!
                                      J11D83!K9L676D3<!3!J11D83!
                                      L6):!
                                            *Portfólio de Thiago Belém (http://thiagobelem.net)
CakePHP - O que fazer?
<,= % %>%?"4%4"%@A%B2C%:0)%4#4D%                                   E$F4GHG!


                                   !"#$%&'(')*+%),-!
                                   "##$%&&#'($)*+,+*-).(/.)(&!
                                   !


                                   !"#$%&$%'()*)$(%$%+$,&'%&$%
                                   '-'.#'/$,#01%,0%2"0%&$%3',$".0%
                                   !
                                       01234!5)&!
                                       6+-7'8!,'!.)7#*)8'!
                                                                                        !
                                       9)#):;!(+$+!'!.+8'7,<*-)!,'!
                                       ,-:$)7-=-8-,+,'!
                                       1*+,>?@)!A-+!B))C8'!1*+7:8+#'!
                                       B))C8'!2+$:!

                                             *Portfólio de Thiago Belém (http://thiagobelem.net)
O que é um Framework?


 Um framework, em desenvolvimento de
 soft ware, é uma abstração que une códigos
 comuns entre vários projetos de soft ware
 provendo uma funcionalidade genérica.
 (Wikipedia)
Framework
          Framework != CMS

          Framework != Padrões de Projeto

          Framework != IDE

          Framework != Biblioteca



Frameworks facilitam o desenvolvimento,
pois ao invés de se fazer tudo na "unha" ou
"reinventar a roda" ele provê um conjunto
funcionalidade prontas.
MVC
                MVC == Model-view-controller


É um padrão de arquitetura de aplicações que
visa separar a lógica da aplicação (Model),
da interface do usuário (View) e do fluxo da
aplicação (Controller). Permite que a mesma
lógica de negócios possa ser acessada e
visualizada por várias interfaces.
*Fonte: http://www.htmlstaff.org/ver.php?id=4500
Isso é MVC:

                  Model

Controller

                  View
MVC em Imagem
MVC em Texto
Controllers
Os controllers (controladores) manipulam as requisições e ajudam coordenando
e preparando as respostas que serão enviadas para o cliente.


Views
As views (visões) formam a camada de apresentação no CakePHP. Elas geram as
saídas para as requisições dos clientes transformando os dados que foram
obtidos a partir dos models.


Models
Os models (modelos) formam o coração de sua aplicação. Tratam das validações,
armazenamento e recuperação dos seus dados.
Uma Requisição Típica do
      CakePHP
Preparando o Ambiente
Preparando o Ambiente




WAMP     LAMP     MAMP
Preparando o Ambiente
Mão na
massa...
Instalando o XAMPP...


Download:
http://www.apachefriends.org/pt_br/xampp.html
Testando...
Mão na
massa...
Instalando o CakePHP...


Download:
http://cakephp.org
Testando...
Diretórios do /APP
Configurações

Alterar o valor de Security.salt em APP/Config/core.php

Alterar o valor de Security.cipherSeed em APP/Config/core.php

Permissão de escrita no diretório APP/tmp (chmod 777)

Configurar banco de dados em APP/Config/database.php
Testando...
Páginas no CakePHP
Páginas no CakePHP


     APP/View/Pages
Páginas no CakePHP


    Vamos criar Páginas....
Layouts no CakePHP
Layouts no CakePHP
               Layout



        View
Layouts no CakePHP


  APP/View/Layouts/default.ctp
Layouts no CakePHP


<?php echo $title_for_layout ?>
Layouts no CakePHP


<?php echo $this->Html->css('style') ?>
Layouts no CakePHP


<?php echo $content_for_layout ?>
Helpers
<?php
echo $this->Html->link(
   'programação',
   array(
     'controller' => 'pages',
     'action' => 'display',
     'programacao'
     )
)
?>
Rotas no CakePHP

           APP/Config/routes.php


Router::connect('<formato da url>', array(
    'controller' => '<controller>',
    'action' => '<action>')
);
Bônus*
Querem?
Cadastro de Notícias
            Model Noticia



Arquivo: /APP/Model/Noticia.php
Nome da Classe: Noticia
Tabela no Banco: noticias
Cadastro de Notícias
          Model Noticia


<?php
class Noticia extends AppModel{

}
?>
Cadastro de Notícias
            Controller Noticia




Arquivo: /APP/Controller/NoticiasController.php
Nome da Classe: NoticiasController
Cadastro de Notícias
                Controller Noticia



<?php
class NoticiasController extends AppController {

}
?>
Cadastro de Notícias
                Controller Noticia



<?php
class NoticiasController extends AppController {
       var $scaffold;
}
?>
Considerações Finais

Próximos passos...
1 - Aprenda (de verdade) PHP
2 - http://book.cakephp.org/2.0/pt
3 - Faça Cursos
Agradecimento
  ESPECIAL!
Referências

Wikipedia

Cookbook

Material pessoal de Thiago Belém (www.thiagobelem.net)
(slides 9, 10 e 11)
Slides:
http://www.slideshare.net/igorpimentel



Código:
https:/ /github.com/igorpimentel/Minicurso-CakePHP



Mais?
@igorpiementel




   Obrigado!

Introdução ao framework CakePHP

  • 1.
  • 2.
    Introdução ao framework CakePHP com Igor Pimentel www.igorpimentel.com
  • 3.
    Quem? Igor Pimentel Sistemas de Informação - UFC Notorion - Sites e Sistemas Web @igorpimentel www.igorpimentel.com
  • 5.
    Sites Sistemas Web
  • 6.
    Agenda 10/MAIO Um pouco de blá.. blá.. blá... Preparando o ambiente Mão na Massa 11/MAIO Mão na Massa Bônus* Considerações Finais
  • 7.
    CakePHP - éde comer? *Foto: http://www.flickr.com/photos/koyhoge O que é? CakePHP é um framework PHP, gratuito, de código aberto, para desenvolvimento ágil.
  • 8.
    CakePHP - Porque usar? Comunidade ativa e amigável Template flexível e rápido Licensa flexível (MIT) Helpers para HTML e Formulários, JavaScript e até AJAX CRUD integrado para interação com o banco de dados Componentes de Email, Cookies, Segurança, Sessão e manipulação de Scaffold de aplicação requisições Código gerado automáticamente (bake) Controle de Acesso (ACL) Arquitetura MVC Multiplas configurações de cache URLs amigáveis Localização e internacionalização Validação de dados Roda em qualquer servidor web, práticamente sem configuração
  • 9.
    <,= % %>"4)%"-$?% CakePHP - Quem usa? @$A4BCB! "##$%&&'(()'*&+',-$! Mais? http://goo.gl/Fg0wp
  • 10.
    <,= % %>%?"4%4"%@A%B2C%:0)%4#4D% CakePHP - O que fazer? E$F4GHG! !"#$%&'()*!"#$%$&! '(()*++,-./0'1234/12+! ! !"#$%&'(%#%'%&)*)+&'+'$#",%'-+' ./01+.2'+/'$"-"'"'/)3-"' ! 56.738!93!-:-;<.1!3!692.7! =1(1:>!?@931:>!26)6!3!! /68379;<.1!93!9.:)17.A.8.9693! B)8169!2C8(.)81!/12!A6<<6!93! )<1D<3::1!3!)<3?.3E!96!F1(1! G.(3!2-8(.H.9.126!".%I7&! J11D83!K9L676D3<!3!J11D83! L6):! *Portfólio de Thiago Belém (http://thiagobelem.net)
  • 11.
    CakePHP - Oque fazer? <,= % %>%?"4%4"%@A%B2C%:0)%4#4D% E$F4GHG! !"#$%&'(')*+%),-! "##$%&&#'($)*+,+*-).(/.)(&! ! !"#$%&$%'()*)$(%$%+$,&'%&$% '-'.#'/$,#01%,0%2"0%&$%3',$".0% ! 01234!5)&! 6+-7'8!,'!.)7#*)8'! ! 9)#):;!(+$+!'!.+8'7,<*-)!,'! ,-:$)7-=-8-,+,'! 1*+,>?@)!A-+!B))C8'!1*+7:8+#'! B))C8'!2+$:! *Portfólio de Thiago Belém (http://thiagobelem.net)
  • 12.
    O que éum Framework? Um framework, em desenvolvimento de soft ware, é uma abstração que une códigos comuns entre vários projetos de soft ware provendo uma funcionalidade genérica. (Wikipedia)
  • 13.
    Framework Framework != CMS Framework != Padrões de Projeto Framework != IDE Framework != Biblioteca Frameworks facilitam o desenvolvimento, pois ao invés de se fazer tudo na "unha" ou "reinventar a roda" ele provê um conjunto funcionalidade prontas.
  • 14.
    MVC MVC == Model-view-controller É um padrão de arquitetura de aplicações que visa separar a lógica da aplicação (Model), da interface do usuário (View) e do fluxo da aplicação (Controller). Permite que a mesma lógica de negócios possa ser acessada e visualizada por várias interfaces. *Fonte: http://www.htmlstaff.org/ver.php?id=4500
  • 15.
    Isso é MVC: Model Controller View
  • 16.
  • 17.
    MVC em Texto Controllers Oscontrollers (controladores) manipulam as requisições e ajudam coordenando e preparando as respostas que serão enviadas para o cliente. Views As views (visões) formam a camada de apresentação no CakePHP. Elas geram as saídas para as requisições dos clientes transformando os dados que foram obtidos a partir dos models. Models Os models (modelos) formam o coração de sua aplicação. Tratam das validações, armazenamento e recuperação dos seus dados.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
    Mão na massa... Instalando oXAMPP... Download: http://www.apachefriends.org/pt_br/xampp.html
  • 23.
  • 24.
    Mão na massa... Instalando oCakePHP... Download: http://cakephp.org
  • 25.
  • 26.
  • 27.
    Configurações Alterar o valorde Security.salt em APP/Config/core.php Alterar o valor de Security.cipherSeed em APP/Config/core.php Permissão de escrita no diretório APP/tmp (chmod 777) Configurar banco de dados em APP/Config/database.php
  • 28.
  • 29.
  • 30.
    Páginas no CakePHP APP/View/Pages
  • 31.
    Páginas no CakePHP Vamos criar Páginas....
  • 32.
  • 33.
  • 34.
    Layouts no CakePHP APP/View/Layouts/default.ctp
  • 35.
    Layouts no CakePHP <?phpecho $title_for_layout ?>
  • 36.
    Layouts no CakePHP <?phpecho $this->Html->css('style') ?>
  • 37.
    Layouts no CakePHP <?phpecho $content_for_layout ?>
  • 38.
    Helpers <?php echo $this->Html->link( 'programação', array( 'controller' => 'pages', 'action' => 'display', 'programacao' ) ) ?>
  • 39.
    Rotas no CakePHP APP/Config/routes.php Router::connect('<formato da url>', array( 'controller' => '<controller>', 'action' => '<action>') );
  • 40.
  • 41.
    Cadastro de Notícias Model Noticia Arquivo: /APP/Model/Noticia.php Nome da Classe: Noticia Tabela no Banco: noticias
  • 42.
    Cadastro de Notícias Model Noticia <?php class Noticia extends AppModel{ } ?>
  • 43.
    Cadastro de Notícias Controller Noticia Arquivo: /APP/Controller/NoticiasController.php Nome da Classe: NoticiasController
  • 44.
    Cadastro de Notícias Controller Noticia <?php class NoticiasController extends AppController { } ?>
  • 45.
    Cadastro de Notícias Controller Noticia <?php class NoticiasController extends AppController { var $scaffold; } ?>
  • 46.
    Considerações Finais Próximos passos... 1- Aprenda (de verdade) PHP 2 - http://book.cakephp.org/2.0/pt 3 - Faça Cursos
  • 48.
  • 49.
    Referências Wikipedia Cookbook Material pessoal deThiago Belém (www.thiagobelem.net) (slides 9, 10 e 11)
  • 50.