SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PDF
CakePHP - Aprendendo a fazer o primeiro bolo
PPTX
CakePHP - Configurando o ambiente de desenvolvimento no Windows
PDF
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
PPT
Desenvolvendo aplicações web com o framework cakephp
PDF
Analise frameworks php
KEY
CakePHP e o desenvolvimento rápido
PDF
Slide Aula - Curso CakePHP
PPTX
Curso jsf
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Configurando o ambiente de desenvolvimento no Windows
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Desenvolvendo aplicações web com o framework cakephp
Analise frameworks php
CakePHP e o desenvolvimento rápido
Slide Aula - Curso CakePHP
Curso jsf

Mais procurados (20)

PDF
JSF com Primefaces
PDF
Como escolher o Framework Java para web?
PPT
JavaServer Faces Produtividade em Desenvolvimento
PDF
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
PPT
Anatomia do JSF, JavaServer Faces
PDF
JSF - JavaServer Faces
PDF
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
PPTX
Arquitetura do Framework Spring
PPTX
Apresentação jsf 2.0
PDF
JavaServer Faces - Desenvolvendo aplicações web com produtividade
PPTX
Desenvolviemento web com ASP.Net e MVC
PPTX
ASP.NET Web Forms X ASP.NET MVC
PPTX
O Futuro do ASP.NET
PDF
Sistema S2DG e Tecnologias Web
PDF
Construindo aplicações web java com netbeans
PPTX
ASP .NET MVC na Prática - C. Augusto Proiete
PDF
Apresentando o Yii Framework
PDF
Java Web Fácil com VRaptor
PDF
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
PDF
Web Offline
JSF com Primefaces
Como escolher o Framework Java para web?
JavaServer Faces Produtividade em Desenvolvimento
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Anatomia do JSF, JavaServer Faces
JSF - JavaServer Faces
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Arquitetura do Framework Spring
Apresentação jsf 2.0
JavaServer Faces - Desenvolvendo aplicações web com produtividade
Desenvolviemento web com ASP.Net e MVC
ASP.NET Web Forms X ASP.NET MVC
O Futuro do ASP.NET
Sistema S2DG e Tecnologias Web
Construindo aplicações web java com netbeans
ASP .NET MVC na Prática - C. Augusto Proiete
Apresentando o Yii Framework
Java Web Fácil com VRaptor
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
Web Offline
Anúncio

Destaque (11)

PPT
PHP- Introduction to Object Oriented PHP
PDF
O que esperar do Zend Framework 2
PPT
SQL Devlopment for 10 ppt
PPS
Workshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
PDF
PHP 5.3 - Estruturas de Controle
PDF
Apostila Tutorial CakePHP
PPT
Css Ppt
PDF
HTML5 for PHP Developers - IPC
PPSX
Classroom Objects: PowerPoint Activities
PPT
PPTX
PHP Powerpoint -- Teach PHP with this
PHP- Introduction to Object Oriented PHP
O que esperar do Zend Framework 2
SQL Devlopment for 10 ppt
Workshop: WebSockets com HTML 5 & PHP - Gustavo Ciello
PHP 5.3 - Estruturas de Controle
Apostila Tutorial CakePHP
Css Ppt
HTML5 for PHP Developers - IPC
Classroom Objects: PowerPoint Activities
PHP Powerpoint -- Teach PHP with this
Anúncio

Semelhante a Desenvolvimento Web com CakePHP (20)

PDF
Palestra ASP.NET MVC
PDF
PPTX
Desenvolvimento web com .NET Core - Meetup São Carlos
PPT
Mini curso JBC
PDF
Aula 1 ASP.NET Core com arquitetura MVC
PPTX
Infoeste 2014 - Desenvolvimento de um CMS com Codeigniter Framework(PHP)
PDF
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
PPTX
ASP .NET Core MVC
PDF
Introdução ao Framework CakePHP
PPTX
ASP.NET MVC
PPTX
Introdução ao Asp.NET MVC
PDF
ASP.NET MVC
PDF
ASP.NET MVC - Alexandre Tarifa
PPTX
Introdução a programação para a Internet
PPTX
Desenvolvimento Web com ASP.NET 4
PPTX
Google App Engine e Python
PPTX
Python, Google App Engine e Webapp-CE
PPTX
Introdução C#
PDF
Aula ASP.NET.pdf whatsap Whatsap pdf.com
PDF
Curso AngularJS - Parte 1
Palestra ASP.NET MVC
Desenvolvimento web com .NET Core - Meetup São Carlos
Mini curso JBC
Aula 1 ASP.NET Core com arquitetura MVC
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...
ASP .NET Core MVC
Introdução ao Framework CakePHP
ASP.NET MVC
Introdução ao Asp.NET MVC
ASP.NET MVC
ASP.NET MVC - Alexandre Tarifa
Introdução a programação para a Internet
Desenvolvimento Web com ASP.NET 4
Google App Engine e Python
Python, Google App Engine e Webapp-CE
Introdução C#
Aula ASP.NET.pdf whatsap Whatsap pdf.com
Curso AngularJS - Parte 1

Último (20)

PPTX
Aula 13 - Tópico Frasal - Argumentação.pptx
PPT
aula de envelecimento.ppt saúde do idoso
PPTX
TREINAMENTO DE INSPETOR DE ANDAIMES.pptx
PDF
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
PDF
A Revolução Francesa de 1789 slides história
PPTX
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
PPTX
GUERRAFRIA.pptdddddddddddddddddddddddddx
PPT
História e Evolução dos Computadores domésticos
PPTX
Trabalho Cidades sustentáveis ou Utopia.pptx
PPTX
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
PPTX
Filosofia Ocidental Antiga 2025 - versão atualizada
PDF
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
PDF
Ementa 2 semestre PEI Orientação de estudo
PDF
saeb_documentos_de_referencia_versao_1.0.pdf
PDF
aulademeiodetransporteemlibras-120304202807-phpapp01_removed.pdf
PPTX
Ciências da Natureza e suas áreas de desenvolvimento
PPTX
Revolução Industrial - Aula Expositiva - 3U4.pptx
PDF
embriologia_animal_aula_share_2026_semestre
PDF
Metabolismo_energético_3ano_pre_vest_2026.pdf
PDF
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...
Aula 13 - Tópico Frasal - Argumentação.pptx
aula de envelecimento.ppt saúde do idoso
TREINAMENTO DE INSPETOR DE ANDAIMES.pptx
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
A Revolução Francesa de 1789 slides história
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
GUERRAFRIA.pptdddddddddddddddddddddddddx
História e Evolução dos Computadores domésticos
Trabalho Cidades sustentáveis ou Utopia.pptx
ACIDOS NUCLEICOS - REPLICAÇÃO DO DNA - E.M.
Filosofia Ocidental Antiga 2025 - versão atualizada
ESPELHOS DA ALMA A PSICOLOGIA POR TRÁS DOS CONTOS DE FADAS.pdf
Ementa 2 semestre PEI Orientação de estudo
saeb_documentos_de_referencia_versao_1.0.pdf
aulademeiodetransporteemlibras-120304202807-phpapp01_removed.pdf
Ciências da Natureza e suas áreas de desenvolvimento
Revolução Industrial - Aula Expositiva - 3U4.pptx
embriologia_animal_aula_share_2026_semestre
Metabolismo_energético_3ano_pre_vest_2026.pdf
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...

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