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

Mais procurados

JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
Fabio 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 Desenvolvimento
Eduardo 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 Dor
Allyson Barros
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
Rafael Ponte
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
netinhoteixeira
 
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
Ana Albert
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
Alexsandro Oliveira
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
Paulo 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 produtividade
Rafael Ponte
 
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
Cleziel Franzoni da Costa
 
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
guest489a65e
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
Eduardo Pires
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
Elenilson 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 netbeans
Sliedesharessbarbosa
 
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
Comunidade NetPonto
 
Apresentando o Yii Framework
Apresentando o Yii FrameworkApresentando o Yii Framework
Apresentando o Yii Framework
angellicacardozo
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
Frederico Maia Arantes
 
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
Yelken Heckman Ferreira Gonzales
 
Web Offline
Web OfflineWeb Offline
Web Offline
Bruno Catão
 

Mais procurados (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
 

Destaque

PHP- Introduction to Object Oriented PHP
PHP-  Introduction to Object Oriented PHPPHP-  Introduction to Object Oriented PHP
PHP- Introduction to Object Oriented PHP
Vibrant Technologies & Computers
 
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
Flávio Lisboa
 
SQL Devlopment for 10 ppt
SQL Devlopment for 10 pptSQL Devlopment for 10 ppt
SQL Devlopment for 10 ppt
Tanay Kishore Mishra
 
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
Tchelinux
 
PHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de ControlePHP 5.3 - Estruturas de Controle
PHP 5.3 - Estruturas de Controle
George Mendonça
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHP
Fernando Palma
 
Css Ppt
Css PptCss Ppt
Css Ppt
Hema Prasanth
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPC
Mayflower GmbH
 
Classroom Objects: PowerPoint Activities
Classroom Objects: PowerPoint ActivitiesClassroom Objects: PowerPoint Activities
Classroom Objects: PowerPoint Activities
A. Simoes
 
Php mysql ppt
Php mysql pptPhp 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
Ian Macali
 

Destaque (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
 

Semelhante a Desenvolvimento Web com CakePHP

Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
Moacir Casemiro Gomes Filho
 
Cake PHP
Cake PHPCake 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
Rodolfo Fadino Junior
 
Mini curso JBC
Mini curso JBCMini curso JBC
Mini curso JBC
Rodrigo Marconato
 
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
 
ASP .NET Core MVC
ASP .NET Core MVCASP .NET Core MVC
ASP .NET Core MVC
Vinicius Mussak
 
Introdução ao Framework CakePHP
Introdução ao Framework CakePHPIntrodução ao Framework CakePHP
Introdução ao Framework CakePHP
Otávio Calaça Xavier
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
Benicio Ávila
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
Aluisio Junior
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
guestea329c
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
Alexandre Tarifa
 
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
Leonardo Soares
 
Desenvolvimento Web com ASP.NET 4
Desenvolvimento Web com ASP.NET 4Desenvolvimento Web com ASP.NET 4
Desenvolvimento Web com ASP.NET 4
Rodrigo 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 Python
PeslPinguim
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
Luis Fernando Marques
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
Alvaro Viebrantz
 
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
Rodrigo Recio
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
Jorge William Rodrigues
 

Semelhante 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
 
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
ASP.NET MVCASP.NET MVC
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

Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTAEstudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
deboracorrea21
 
oficia de construção de recursos para aluno DI.pdf
oficia de construção de recursos para aluno DI.pdfoficia de construção de recursos para aluno DI.pdf
oficia de construção de recursos para aluno DI.pdf
marcos oliveira
 
Caça - palavras e cruzadinha com dígrafos
Caça - palavras  e cruzadinha   com  dígrafosCaça - palavras  e cruzadinha   com  dígrafos
Caça - palavras e cruzadinha com dígrafos
Mary Alvarenga
 
A perspectiva colaborativa e as novas práticas de inclusão. (1).pptx
A perspectiva colaborativa e as novas práticas de inclusão. (1).pptxA perspectiva colaborativa e as novas práticas de inclusão. (1).pptx
A perspectiva colaborativa e as novas práticas de inclusão. (1).pptx
marcos oliveira
 
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
Sandra Pratas
 
Guerra de reconquista da Península ibérica
Guerra de reconquista da Península ibéricaGuerra de reconquista da Península ibérica
Guerra de reconquista da Península ibérica
felipescherner
 
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdfHistória das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
LeideLauraCenturionL
 
Aprendizagem Imersiva: Conceitos e Caminhos
Aprendizagem Imersiva: Conceitos e CaminhosAprendizagem Imersiva: Conceitos e Caminhos
Aprendizagem Imersiva: Conceitos e Caminhos
Leonel Morgado
 
Caça-palavras e cruzadinha - Encontros consonantais.
Caça-palavras e cruzadinha -  Encontros consonantais.Caça-palavras e cruzadinha -  Encontros consonantais.
Caça-palavras e cruzadinha - Encontros consonantais.
Mary Alvarenga
 
Apostila em LIBRAS - Curso Básico ENAP 2019.pdf
Apostila em LIBRAS - Curso Básico ENAP 2019.pdfApostila em LIBRAS - Curso Básico ENAP 2019.pdf
Apostila em LIBRAS - Curso Básico ENAP 2019.pdf
pattyhsilva271204
 
Licao de adultos Topico 1 CPAD edit.pptx
Licao de adultos Topico 1 CPAD edit.pptxLicao de adultos Topico 1 CPAD edit.pptx
Licao de adultos Topico 1 CPAD edit.pptx
jetroescola
 
Caderno_de_referencias_Ocupacaohumana_IV_FlaviaCoelho_compressed.pdf
Caderno_de_referencias_Ocupacaohumana_IV_FlaviaCoelho_compressed.pdfCaderno_de_referencias_Ocupacaohumana_IV_FlaviaCoelho_compressed.pdf
Caderno_de_referencias_Ocupacaohumana_IV_FlaviaCoelho_compressed.pdf
shirleisousa9166
 
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Falcão Brasil
 
Infografia | Presidência húngara do Conselho da UE
Infografia | Presidência húngara do Conselho da UEInfografia | Presidência húngara do Conselho da UE
Infografia | Presidência húngara do Conselho da UE
Centro Jacques Delors
 
Trabalho Colaborativo na educação especial.pdf
Trabalho Colaborativo na educação especial.pdfTrabalho Colaborativo na educação especial.pdf
Trabalho Colaborativo na educação especial.pdf
marcos oliveira
 
Alfabetização de adultos.pdf
Alfabetização de             adultos.pdfAlfabetização de             adultos.pdf
Alfabetização de adultos.pdf
arodatos81
 
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptxSlides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
LuizHenriquedeAlmeid6
 
apresentação metodologia terapia ocupacional
apresentação metodologia terapia ocupacionalapresentação metodologia terapia ocupacional
apresentação metodologia terapia ocupacional
shirleisousa9166
 
A experiência do professor. Publicado EM 08.07.2024
A experiência do professor. Publicado EM 08.07.2024A experiência do professor. Publicado EM 08.07.2024
A experiência do professor. Publicado EM 08.07.2024
Espanhol Online
 

Último (20)

Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTAEstudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
Estudo Infantil - MISSÕES NACIONAIS - IGREJA BATISTA
 
oficia de construção de recursos para aluno DI.pdf
oficia de construção de recursos para aluno DI.pdfoficia de construção de recursos para aluno DI.pdf
oficia de construção de recursos para aluno DI.pdf
 
Caça - palavras e cruzadinha com dígrafos
Caça - palavras  e cruzadinha   com  dígrafosCaça - palavras  e cruzadinha   com  dígrafos
Caça - palavras e cruzadinha com dígrafos
 
A perspectiva colaborativa e as novas práticas de inclusão. (1).pptx
A perspectiva colaborativa e as novas práticas de inclusão. (1).pptxA perspectiva colaborativa e as novas práticas de inclusão. (1).pptx
A perspectiva colaborativa e as novas práticas de inclusão. (1).pptx
 
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
 
Guerra de reconquista da Península ibérica
Guerra de reconquista da Península ibéricaGuerra de reconquista da Península ibérica
Guerra de reconquista da Península ibérica
 
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdfHistória das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
 
Aprendizagem Imersiva: Conceitos e Caminhos
Aprendizagem Imersiva: Conceitos e CaminhosAprendizagem Imersiva: Conceitos e Caminhos
Aprendizagem Imersiva: Conceitos e Caminhos
 
Caça-palavras e cruzadinha - Encontros consonantais.
Caça-palavras e cruzadinha -  Encontros consonantais.Caça-palavras e cruzadinha -  Encontros consonantais.
Caça-palavras e cruzadinha - Encontros consonantais.
 
Apostila em LIBRAS - Curso Básico ENAP 2019.pdf
Apostila em LIBRAS - Curso Básico ENAP 2019.pdfApostila em LIBRAS - Curso Básico ENAP 2019.pdf
Apostila em LIBRAS - Curso Básico ENAP 2019.pdf
 
FOTOS_AS CIÊNCIAS EM AÇÃO .
FOTOS_AS CIÊNCIAS EM AÇÃO                .FOTOS_AS CIÊNCIAS EM AÇÃO                .
FOTOS_AS CIÊNCIAS EM AÇÃO .
 
Licao de adultos Topico 1 CPAD edit.pptx
Licao de adultos Topico 1 CPAD edit.pptxLicao de adultos Topico 1 CPAD edit.pptx
Licao de adultos Topico 1 CPAD edit.pptx
 
Caderno_de_referencias_Ocupacaohumana_IV_FlaviaCoelho_compressed.pdf
Caderno_de_referencias_Ocupacaohumana_IV_FlaviaCoelho_compressed.pdfCaderno_de_referencias_Ocupacaohumana_IV_FlaviaCoelho_compressed.pdf
Caderno_de_referencias_Ocupacaohumana_IV_FlaviaCoelho_compressed.pdf
 
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
Apresentação Institucional do Centro Gestor e Operacional do Sistema de Prote...
 
Infografia | Presidência húngara do Conselho da UE
Infografia | Presidência húngara do Conselho da UEInfografia | Presidência húngara do Conselho da UE
Infografia | Presidência húngara do Conselho da UE
 
Trabalho Colaborativo na educação especial.pdf
Trabalho Colaborativo na educação especial.pdfTrabalho Colaborativo na educação especial.pdf
Trabalho Colaborativo na educação especial.pdf
 
Alfabetização de adultos.pdf
Alfabetização de             adultos.pdfAlfabetização de             adultos.pdf
Alfabetização de adultos.pdf
 
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptxSlides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
Slides Lição 3, CPAD, Rute e Noemi, Entrelaçadas pelo Amor.pptx
 
apresentação metodologia terapia ocupacional
apresentação metodologia terapia ocupacionalapresentação metodologia terapia ocupacional
apresentação metodologia terapia ocupacional
 
A experiência do professor. Publicado EM 08.07.2024
A experiência do professor. Publicado EM 08.07.2024A experiência do professor. Publicado EM 08.07.2024
A experiência do professor. Publicado EM 08.07.2024
 

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