SlideShare una empresa de Scribd logo
1 de 85
Descargar para leer sin conexión
Desenvolvimento Web
com CakePHP
Sérgio Vilar
Desenvolvedor de Interfaces, Redesoft
Agenda
• Pré-requisitos para este minicurso
• Frameworks
• MVC
• CakePHP
• Mão na massa
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é...
Frameworks
O que é um framework?
• É uma estrutura de suporte desenvolvida para que outro projeto de
 software seja organizado e desenvolvido o tomando como base.
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:
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
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
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
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
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
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
Porque usar um Framework?
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
Porque usar um Framework?
• Estabelecimento de um padrão de desenvolvimento
• Código orientado a objetos e organizado
• Consequentemente, manutenção mais fácil
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)
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)
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)
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)
Principais Frameworks PHP
• Yii
• CodeIgniter
• CakePHP
• Zend
• Symfony




Fonte: phpframeworks.com
MVC
MVC
• Padrão de projetos
MVC
• Padrão de projetos
• Separa a aplicação em três partes:
MVC
• Padrão de projetos
• Separa a aplicação em três partes:


                           Interação com o banco

                                 Model
MVC
• Padrão de projetos
• Separa a aplicação em três partes:


                                  Interação com o banco

                                        Model


               Interface da aplicação

                      View
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
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?
MVC

Browser         Controler




     O Browser envia uma requisição à aplicação
MVC

Browser             Controler


                                             Model




           O Controller processa a requisicão e
          consulta a lógica de negócio da aplicação
MVC

Browser           Controler


                                          Model




                                          DB


          O Model acessa o Banco de Dados e
          recupera os dados requisitados pelo
                      Controller
MVC

Browser           Controler


                                         Model


                    View


                                          DB


             O Controller renderiza a View
          correspondente e apresenta os dados
                     recuperados
MVC, porque usar?
MVC, porque usar?
• Base funcional e organizacional da aplicação
MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
MVC, porque usar?
• Base funcional e organizacional da aplicação
• Conjunto de ferramentas (validação, múltiplos DBs, etc)
• Aplicação escalável
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
CakePHP
O que é o CakePHP?
O que é o CakePHP?
• O CakePHP é um Framework Php que visa o desenvolvimento ágil de
 aplicações usando os padrões MVC e ORM.
CakePHP: Vantagens
CakePHP: Vantagens
• Compatível com Php 4 e 5
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
CakePHP: Vantagens
• Compatível com Php 4 e 5
• Curva de aprendizado alta
• Possui CRUD (Create-Read-Update-Delete) integrado
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)
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
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
CakePHP: Instalando
https://github.com/sergiovilar/minicurso-cakephp
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
CakePHP: Instalando
• Extraia o .zip e copie para a pasta C:xampphtdocs
• Renomeie a pasta para “minicurso-cakephp”
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
CakePHP: Instalando
• Certifique-se de que seu servidor Apache está ligado
• Teste acessando http://localhost/minicurso-cakephp
Mão na massa!
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
Configurando o banco
• Importe o arquivo minicurso.sql para o banco de dados na aplicação
 através do phpMyAdmin
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
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:
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
Criando o primeiro Model
app/Model/Post.php



  <?php

  class Post extends AppModel {

        public $name = 'Post';

  }

  ?>
Criando o primeiro Controller
app/Controller/PostsController.php


  <?php
  class PostsController extends AppController{!

  ! var $uses = 'Post';
  ! var $scaffold;

  }

  ?>
Criando o primeiro Controller
app/Controller/PostsController.php


  <?php
  class PostsController extends AppController{!

  ! var $uses = 'Post';              Model
  ! var $scaffold;

  }

  ?>
Criando o primeiro Controller
app/Controller/PostsController.php


  <?php
  class PostsController extends AppController{!

  ! var $uses = 'Post';
  ! var $scaffold;
                                     O que é isso?
  }

  ?>
Scaffold
• O Scaffold é um recurso do CakePHP que cria o CRUD (Create-Read-
 Update-Delete) do nosso Controller
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
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
Vamos testar?
Acesse http://localhost/minicurso-cakephp/posts/add




          Aplicação        Controller            Método
Vamos testar?
Acesse http://localhost/minicurso-cakephp/posts/add
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:
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');

  }
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.
Criando o método “blog”
Adicione o método no PostsController:

  public function blog(){
      !
   this->layout = 'blog';

      $this->set('posts', $this->Post->find('all'));

  }
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'));

  }
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.
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; ?>
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; ?>
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; ?>
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
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());

  }
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());

  }
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());

  }
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
Pronto!
Nosso blog está pronto, acesse http://localhost/minicurso-cakephp/posts/
blog e teste novamente.
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
Exercício
Tomando como base o exemplo do blog, crie um Model, um Controller
com CRUD e listagem tomando como base a tabela events.
É isso aí, até a próxima!
vilar@me.com
http://about.me/vilar
http://slideshare.net/sergiovilar
http://github.com/sergiovilar

Más contenido relacionado

La actualidad más candente

JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoEduardo Bregaida
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaAna Albert
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
 
ASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVCASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVCguest489a65e
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeansSliedesharessbarbosa
 
ASP .NET MVC na Prática - C. Augusto Proiete
ASP .NET MVC na Prática - C. Augusto ProieteASP .NET MVC na Prática - C. Augusto Proiete
ASP .NET MVC na Prática - C. Augusto ProieteComunidade NetPonto
 
Apresentando o Yii Framework
Apresentando o Yii FrameworkApresentando o Yii Framework
Apresentando o Yii Frameworkangellicacardozo
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAYelken Heckman Ferreira Gonzales
 

La actualidad más candente (20)

JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Desenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVCDesenvolviemento web com ASP.Net e MVC
Desenvolviemento web com ASP.Net e MVC
 
ASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVCASP.NET Web Forms X ASP.NET MVC
ASP.NET Web Forms X ASP.NET MVC
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
ASP .NET MVC na Prática - C. Augusto Proiete
ASP .NET MVC na Prática - C. Augusto ProieteASP .NET MVC na Prática - C. Augusto Proiete
ASP .NET MVC na Prática - C. Augusto Proiete
 
Apresentando o Yii Framework
Apresentando o Yii FrameworkApresentando o Yii Framework
Apresentando o Yii Framework
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
Web Offline
Web OfflineWeb Offline
Web Offline
 

Destacado

O que esperar do Zend Framework 2
O que esperar do Zend Framework 2O que esperar do Zend Framework 2
O que esperar do Zend Framework 2Flávio Lisboa
 
Workshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
Workshop: WebSockets com HTML 5 & PHP - Gustavo CielloWorkshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
Workshop: WebSockets com HTML 5 & PHP - Gustavo CielloTchelinux
 
PHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de ControlePHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de ControleGeorge Mendonça
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHPFernando Palma
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCMayflower GmbH
 
Classroom Objects: PowerPoint Activities
Classroom Objects: PowerPoint ActivitiesClassroom Objects: PowerPoint Activities
Classroom Objects: PowerPoint ActivitiesA. Simoes
 
PHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with thisPHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with thisIan Macali
 

Destacado (11)

PHP- Introduction to Object Oriented PHP
PHP-  Introduction to Object Oriented PHPPHP-  Introduction to Object Oriented PHP
PHP- Introduction to Object Oriented PHP
 
O que esperar do Zend Framework 2
O que esperar do Zend Framework 2O que esperar do Zend Framework 2
O que esperar do Zend Framework 2
 
SQL Devlopment for 10 ppt
SQL Devlopment for 10 pptSQL Devlopment for 10 ppt
SQL Devlopment for 10 ppt
 
Workshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
Workshop: WebSockets com HTML 5 & PHP - Gustavo CielloWorkshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
Workshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
 
PHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de ControlePHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de Controle
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHP
 
Css Ppt
Css PptCss Ppt
Css Ppt
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPC
 
Classroom Objects: PowerPoint Activities
Classroom Objects: PowerPoint ActivitiesClassroom Objects: PowerPoint Activities
Classroom Objects: PowerPoint Activities
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
PHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with thisPHP Powerpoint -- Teach PHP with this
PHP Powerpoint -- Teach PHP with this
 

Similar a Desenvolvimento Web com CakePHP

Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Rafael Oliveira
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVCBenicio Ávila
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifaguestea329c
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Desenvolvimento Web com ASP.NET 4
Desenvolvimento Web com ASP.NET 4Desenvolvimento Web com ASP.NET 4
Desenvolvimento Web com ASP.NET 4Rodrigo Kono
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Renzo Nuccitelli
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e PythonPeslPinguim
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 

Similar a Desenvolvimento Web com CakePHP (20)

Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Mini curso JBC
Mini curso JBCMini curso JBC
Mini curso JBC
 
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
ASP .NET Core MVC
ASP .NET Core MVCASP .NET Core MVC
ASP .NET Core MVC
 
Introdução ao Framework CakePHP
Introdução ao Framework CakePHPIntrodução ao Framework CakePHP
Introdução ao Framework CakePHP
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Desenvolvimento Web com ASP.NET 4
Desenvolvimento Web com ASP.NET 4Desenvolvimento Web com ASP.NET 4
Desenvolvimento Web com ASP.NET 4
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e Python
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
 

Último

Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxLusGlissonGud
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Bloco de português com artigo de opinião 8º A, B 3.docx
Bloco de português com artigo de opinião 8º A, B 3.docxBloco de português com artigo de opinião 8º A, B 3.docx
Bloco de português com artigo de opinião 8º A, B 3.docxkellyneamaral
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 

Último (20)

Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Bloco de português com artigo de opinião 8º A, B 3.docx
Bloco de português com artigo de opinião 8º A, B 3.docxBloco de português com artigo de opinião 8º A, B 3.docx
Bloco de português com artigo de opinião 8º A, B 3.docx
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 

Desenvolvimento Web com CakePHP

  • 1. Desenvolvimento Web com CakePHP Sérgio Vilar Desenvolvedor de Interfaces, Redesoft
  • 2. Agenda • Pré-requisitos para este minicurso • Frameworks • MVC • CakePHP • Mão na massa
  • 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
  • 13. Porque usar um Framework?
  • 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)
  • 21. Principais Frameworks PHP • Yii • CodeIgniter • CakePHP • Zend • Symfony Fonte: phpframeworks.com
  • 22. MVC
  • 23. MVC • Padrão de projetos
  • 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
  • 34. MVC, porque usar? • Base funcional e organizacional da aplicação
  • 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
  • 39. O que é o CakePHP?
  • 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.
  • 43. CakePHP: Vantagens • Compatível com Php 4 e 5 • Curva de aprendizado alta
  • 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
  • 50. CakePHP: Instalando • Extraia o .zip e copie para a pasta C:xampphtdocs • Renomeie a pasta para “minicurso-cakephp”
  • 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. CakePHP: Instalando • Certifique-se de que seu servidor Apache está ligado • Teste acessando http://localhost/minicurso-cakephp
  • 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.
  • 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. 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. 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. 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. 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()); }
  • 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. 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