SlideShare une entreprise Scribd logo
1  sur  152
Télécharger pour lire hors ligne
CakePHP
Aprendendo a fazer o primeiro bolo




                              por Léo Hackin
Cardápio

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

  Pratos do dia



PHP à Carbonara
Lógica misturada a apresentação
Eita nóis!

    Pratos do dia



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

 Pratos do dia



Arrumadinho MVC
 Modelo-Visão-Controlador
Agora sim...

Pratos do dia



E para sobremesa ... BOLO!
Sobre o cozinheiro

                Léo Hackin
  Léo Hackin é desenvolvedor desde 96 e já
 passou por algumas das principais empresas
    de internet capixabas, desenvolvendo
soluções para internet, dispositivos móveis e
   desktop. Apaixonado por PHP a 7 anos,
    atualmente trabalha como analista de
soluções JavaEE para attPS Tech (São Paulo) e
 como Consultor em soluções para internet
           em empresas privadas.
O PHP ontem e hoje

O PHP ontem
O PHP ontem e hoje

                 O PHP ontem

Linguagem para apps simples
O PHP ontem e hoje

                 O PHP ontem

Linguagem para apps simples

POGramadores doidões
O PHP ontem e hoje

                 O PHP ontem

Linguagem para apps simples

POGramadores doidões
Baixa remuneração
O PHP ontem e hoje

                  O PHP ontem

Linguagem para apps simples

POGramadores doidões
Baixa remuneração
Consistência discutível
O PHP ontem e hoje

                  O PHP ontem

Linguagem para apps simples

POGramadores doidões
Baixa remuneração
Consistência discutível
Falta de padrões de design
O PHP ontem e hoje

                  O PHP ontem

Linguagem para apps simples

POGramadores doidões
Baixa remuneração
Consistência discutível
Falta de padrões de design
O PHP ontem e Hoje

Agravantes
O PHP ontem e Hoje

                    Agravantes
Falta de conhecimento teórico de programação
O PHP ontem e Hoje

                     Agravantes
Falta de conhecimento teórico de programação

Rápido == feito nas coxas
O PHP ontem e Hoje

                     Agravantes
Falta de conhecimento teórico de programação

Rápido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
O PHP ontem e Hoje

                     Agravantes
Falta de conhecimento teórico de programação

Rápido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
Script Kiddies, sobrinhos e “amigos que mexem com
informática”
O PHP ontem e Hoje

                      Agravantes
Falta de conhecimento teórico de programação

Rápido == feito nas coxas
Paradigma mal resolvido (Estrutural x OO)
Script Kiddies, sobrinhos e “amigos que mexem com
informática”
Herança estrutural: funções redundantes, includes, etc ...
O PHP ontem e Hoje

O PHP hoje
O PHP ontem e Hoje

                   O PHP hoje
Maturidade para soluções corporativas
O PHP ontem e Hoje

                   O PHP hoje
Maturidade para soluções corporativas

OO verdadeiro
O PHP ontem e Hoje

                   O PHP hoje
Maturidade para soluções corporativas

OO verdadeiro

Remuneração “de gente”
O PHP ontem e Hoje

                   O PHP hoje
Maturidade para soluções corporativas

OO verdadeiro

Remuneração “de gente”

Montes e montes de documentação
O PHP ontem e Hoje

                   O PHP hoje
Maturidade para soluções corporativas

OO verdadeiro

Remuneração “de gente”

Montes e montes de documentação

N projetos ... FRAMEWORKS!
O PHP ontem e Hoje

                   O PHP hoje
Maturidade para soluções corporativas

OO verdadeiro

Remuneração “de gente”

Montes e montes de documentação           O tempo passa!

                                        O tempo   voa!
N projetos ... FRAMEWORKS!
Lógica x Apresentação

PHP gerando HTML
Lógica x Apresentação

PHP espaguete
Lógica x Apresentação

PHP espaguete
Lógica x Apresentação

             Ops... Problemas!
Codificação e manutenção custosa
Quebra pau com designers
Redundância de métodos, funções, includes ...
Despadronização é ruim!!!
Segmentação da lógica
Lógica x Apresentação

          Ops... Problemas!



PHP à Carbonara
Lógica x Apresentação

          Ops... Problemas!

                    =


PHP à Carbonara
MVC

O que é MVC
MVC

                 O que é MVC
Padrão de arquitetura de software
MVC

                  O que é MVC
Padrão de arquitetura de software

Separação da aplicação em três partes:
MVC

                        O que é MVC
    Padrão de arquitetura de software

    Separação da aplicação em três partes:




Os dados da aplicação
MVC

                        O que é MVC
    Padrão de arquitetura de software

    Separação da aplicação em três partes:




Os dados da aplicação               A apresentação da informação
MVC

                                O que é MVC
    Padrão de arquitetura de software

    Separação da aplicação em três partes:


                        Processa os eventos da aplicação




Os dados da aplicação                                A apresentação da informação
MVC

Características
MVC

                 Características
Base funcional para toda a aplicação
MVC

                 Características
Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...
MVC

                 Características
Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

Consistência e produtividade
MVC

                 Características
Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

Consistência e produtividade

Desenvolvimento em paralelo
MVC

                 Características
Base funcional para toda a aplicação

Conjunto de ferramentas, classes ...

Consistência e produtividade

Desenvolvimento em paralelo

Manutenção e escalabilidade menos custosa
MVC

Como funciona, tio ?
MVC

Como funciona, tio ?
              Browser envia requisição à aplicação
MVC

  Como funciona, tio ?
                          Browser envia requisição à aplicação




http://site/hello
MVC

  Como funciona, tio ?
                          Browser envia requisição à aplicação
                          O controller processa a ação




http://site/hello
MVC

  Como funciona, tio ?
                          Browser envia requisição à aplicação
                          O controller processa a ação
                          O controller processa a requisição
                          e acessa a lógica de negócio
                          (model) da aplicação




http://site/hello
MVC

                     Como funciona, tio ?
                                             Browser envia requisição à aplicação
                                             O controller processa a ação
                                             O controller processa a requisição
                                             e acessa a lógica de negócio
                                             (model) da aplicação
                                             O model acessa a base de dados
                                             da aplicação para executar a ação
                                             requisitada pelo controller




Mysql, Postgres,
Oracle e muitos
    outros




                   http://site/hello
MVC

                     Como funciona, tio ?
                                             Browser envia requisição à aplicação
                                             O controller processa a ação
                                             O controller processa a requisição
                                             e acessa a lógica de negócio
                                             (model) da aplicação
                                             O model acessa a base de dados
                                             da aplicação para executar a ação
                                             requisitada pelo controller
                                             O controller então seleciona a
                                             view correspondente a ação


Mysql, Postgres,
Oracle e muitos
    outros




                   http://site/hello
MVC

                     Como funciona, tio ?
                                             Browser envia requisição à aplicação
                                             O controller processa a ação
                                             O controller processa a requisição
                                             e acessa a lógica de negócio
                                             (model) da aplicação
                                             O model acessa a base de dados
                                             da aplicação para executar a ação
                                             requisitada pelo controller
                                             O controller então seleciona a
                                             view correspondente a ação
                                             O controller renderiza a view
Mysql, Postgres,                             incluindo os dados de resposta
Oracle e muitos                              da ação
    outros




                   http://site/hello
MVC

                     Como funciona, tio ?
                                             Browser envia requisição à aplicação
                                             O controller processa a ação
                                             O controller processa a requisição
                                             e acessa a lógica de negócio
                                             (model) da aplicação
                                             O model acessa a base de dados
                                             da aplicação para executar a ação
                                             requisitada pelo controller
                                             O controller então seleciona a
                                             view correspondente a ação
                                             O controller renderiza a view
Mysql, Postgres,                             incluindo os dados de resposta
Oracle e muitos                              da ação
    outros
                                             O controller devolve a resposta
                                             para o browser


                   http://site/hello
MVC

Frameworks PHP
CakePHP

          O que é CakePHP
CakePHP é um framework de desenvolvimento
 rápido para PHP que provê uma arquitetura
extensível para desenvolvimento, manutenção e
implantação de aplicacões. Usando padrões de
 projeto como MVC e ORM com “convenção
 ao invés de configuração”, o CakePHP reduz
      custos de desenvolvimento e ajuda
 desenvolvedores a “escrever menos código”.
CakePHP

O que é CakePHP
CakePHP

           O que é CakePHP
Compatível com PHP 4 e 5
CakePHP

           O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
CakePHP

             O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
CakePHP

             O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CakePHP

             O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CRUD (Create-Read-Update-Delete) integrado
CakePHP

             O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
CakePHP

             O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
Internacionalização
CakePHP

             O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)
Internacionalização
Comunidade ativa e crescente
CakePHP

             O que é CakePHP
Compatível com PHP 4 e 5
Arquitetura MVC
Helpers Ajax, HTML, JS e outros
Componentes nativos para Email, Sessões, Segurança ...
CRUD (Create-Read-Update-Delete) integrado
ActiveRecord (ORM)                        Ativa e crescente ?

                                          NOFA!
Internacionalização                            Eu quero!



Comunidade ativa e crescente
CakePHP

            Requisitos mínimos
Um computador =)

Servidor HTTP (Apache 2)
PHP4 ou PHP5
Base de dados (opcional)
   MySQL, Postgres, SQL Server, Oracle, SQLite,
   ODBC, ADOdb, Firebird DB2
Café, chá ou suco (opcional)
CakePHP

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

Descompactar o arquivo em seu servidor web
CakePHP

                        Instalando
Configurar o http.conf
CakePHP

                        Instalando
Configurar o http.conf
CakePHP

                        Instalando
Configurar o http.conf
CakePHP

                        Instalando
Configurar o http.conf
CakePHP

                        Instalando
Configurar o http.conf
CakePHP

                   Instalando
Execute e teste!
CakePHP

Estrutura Funcional
CakePHP

Estrutura Funcional
CakePHP

Estrutura Funcional
                 Model


                 View


                 Controller
CakePHP

Estrutura Funcional
                 Model
                  Behaviors e Datasources


                 View
                  Helpers e Elements


                 Controller
                  Components
CakePHP

Estrutura de Arquivos
CakePHP

Estrutura de Arquivos
    config - configuração da app (banco, conf. núcleo, etc)
    controllers - controles da app
    locale - strings de internacionalização
    models - modelos da app
    plugins - pacotes de plugins
    tmp - local de arquivos temporários
    vendors - aplicativos de terceiros
    views - views do sistema
    webroot - raiz da aplicação
CakePHP

Estrutura de Arquivos
    config - configuração da app (banco, conf. núcleo, etc)
    controllers - controles da app
    locale - strings de internacionalização
    models - modelos da app
    plugins - pacotes de plugins
    tmp - local de arquivos temporários
    vendors - aplicativos de terceiros
    views - views do sistema
    webroot - raiz da aplicação
Aplicação exemplo: Blog

                    O primeiro bolo
Aplicação de blog

      Listar
      Inserir
      Editar
      Deletar                           O primeiro a gente

                                       NUNCA
                                            esquece ...
Aplicação exemplo: Blog

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




app/config/database.php
Aplicação exemplo: Blog

               Criando o model
Criar tabela na database escolhida
Aplicação exemplo: Blog

              Criando o model
app/models/post.php
Aplicação exemplo: Blog

                               Convenções
MODEL
 Nome da tabela SEMPRE no plural (ex.: model post -> tabela posts)

 Toda tabela deve possuir a chave primária id (auto-numérica ou com 36 caracteres)



CONTROLLER
 Nome SEMPRE no plural (ex.: model post -> controller posts)

 Nome do arquivo no padrão <model no plural>_controller.php
Aplicação exemplo: Blog

           Criando o controller
app/controllers/posts_controller.php
Aplicação exemplo: Blog

             Criando uma views
app/views/posts/index.ctp - listagem dos posts
Aplicação exemplo: Blog

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




                          helper $html->link
Aplicação exemplo: Blog

         Acessando a ação


http://localhost/posts
Aplicação exemplo: Blog

         Acessando a ação


http://localhost/posts

                  host
Aplicação exemplo: Blog

         Acessando a ação
                           controller


http://localhost/posts

                  host
Aplicação exemplo: Blog

Executando a ação
Aplicação exemplo: Blog

             Adicionando ações
app/controllers/posts_controller.php
Aplicação exemplo: Blog

             Adicionando ações
app/views/posts/view.ctp
Aplicação exemplo: Blog

        Acessando a ação


http://localhost/posts/view/2
Aplicação exemplo: Blog

        Acessando a ação


http://localhost/posts/view/2
              host
Aplicação exemplo: Blog

        Acessando a ação
              controller


http://localhost/posts/view/2
              host
Aplicação exemplo: Blog

        Acessando a ação
              controller           ação


http://localhost/posts/view/2
              host
Aplicação exemplo: Blog

        Acessando a ação
              controller           ação


http://localhost/posts/view/2
              host                     ID
Aplicação exemplo: Blog

Adicionando ações
Aplicação exemplo: Blog

         Modificando o layout
Layout

  View



         Elements
Aplicação exemplo: Blog

         Modificando o layout
Layout

  View



         Elements
Aplicação exemplo: Blog

         Modificando o layout
Layout

  View



         Elements
Aplicação exemplo: Blog

         Modificando o layout
Layout

  View



         Elements
Aplicação exemplo: Blog

Modificando o layout
Aplicação exemplo: Blog

Modificando o layout




             conteúdo da view
Aplicação exemplo: Blog

        Modificando o layout
Antes              Depois
Aplicação exemplo: Blog

            Adicionando um post
app/controllers/posts_controller.php
Aplicação exemplo: Blog

            Adicionando um post
app/views/posts/add.ctp
Aplicação exemplo: Blog

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


                                      FormHelper
Aplicação exemplo: Blog

            Adicionando um post
app/views/posts/index.ctp
Aplicação exemplo: Blog

            Adicionando um post
app/views/posts/index.ctp
Aplicação exemplo: Blog

Adicionando um post
Aplicação exemplo: Blog

           Validação de campos
app/models/post.php
Aplicação exemplo: Blog

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


                              validação
Aplicação exemplo: Blog

Validação de campos
Aplicação exemplo: Blog

Validação de campos
Aplicação exemplo: Blog

              Deletando um post
app/controllers/posts_controller.php
Aplicação exemplo: Blog

              Deletando um post
app/views/posts/index.ctp
Aplicação exemplo: Blog

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




                             confirma a operação
Aplicação exemplo: Blog

Deletando um post
Aplicação exemplo: Blog

                Editando um post
app/controllers/posts_controller.php
Aplicação exemplo: Blog

                Editando um post
app/views/posts/edit.ctp
Aplicação exemplo: Blog

                Editando um post
app/views/posts/edit.ctp
Aplicação exemplo: Blog

                Editando um post
app/views/posts/index.ctp
Aplicação exemplo: Blog

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




                   e tome helper
Aplicação exemplo: Blog

Editando um post
Extras

                    CRUD e Scaffolding
app/model/comment.php




app/model/comment.php
Extras

            CRUD via Scaffolding
Vantagens




Desvantagens
Extras

            CRUD via Scaffolding
Vantagens
     Ótimo para prototipar aplicações




Desvantagens
Extras

            CRUD via Scaffolding
Vantagens
     Ótimo para prototipar aplicações
     Pode ser usado numa app em producão



Desvantagens
Extras

            CRUD via Scaffolding
Vantagens
     Ótimo para prototipar aplicações
     Pode ser usado numa app em producão
     Mamão com açucar!!

Desvantagens
Extras

            CRUD via Scaffolding
Vantagens
     Ótimo para prototipar aplicações
     Pode ser usado numa app em producão
     Mamão com açucar!!

Desvantagens
     Não foi feito para ser flexível
Extras

            CRUD via Scaffolding
Vantagens
     Ótimo para prototipar aplicações
     Pode ser usado numa app em producão
     Mamão com açucar!!

Desvantagens
     Não foi feito para ser flexível
     Baixa segurança (em seu estado default)
Extras

                 CRUD via Bake


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

               CRUD via Bake
Vantagens




Desvantagens
Extras

                  CRUD via Bake
Vantagens
      Cria “esqueletos” de models, views e controllers




Desvantagens
Extras

                   CRUD via Bake
Vantagens
      Cria “esqueletos” de models, views e controllers
      Ao contrário do scaffold, cria arquivos reais na app




Desvantagens
Extras

                   CRUD via Bake
Vantagens
      Cria “esqueletos” de models, views e controllers
      Ao contrário do scaffold, cria arquivos reais na app
      Extremamente poderoso e funcional



Desvantagens
Extras

                   CRUD via Bake
Vantagens
      Cria “esqueletos” de models, views e controllers
      Ao contrário do scaffold, cria arquivos reais na app
      Extremamente poderoso e funcional
      Permite configurar os modelos

Desvantagens
Extras

                   CRUD via Bake
Vantagens
      Cria “esqueletos” de models, views e controllers
      Ao contrário do scaffold, cria arquivos reais na app
      Extremamente poderoso e funcional
      Permite configurar os modelos

Desvantagens
      Acostuma mal! :)
Fechando o buteco

Conclusões
Fechando o buteco

                    Conclusões
Fácil de codificar
Fechando o buteco

                    Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Fechando o buteco

                    Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Fechando o buteco

                    Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Arquitetura consistente e flexível
Fechando o buteco

                    Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Arquitetura consistente e flexível
Helpers ajudam um bocado
Fechando o buteco

                    Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Arquitetura consistente e flexível
Helpers ajudam um bocado
Codificação limpa, correta e sustentável
Fechando o buteco

                      Conclusões
Fácil de codificar
ORM e MVC aumentam a produtividade
Ferramentas de prototipação poderosas (bake/scaffold)
Arquitetura consistente e flexível
Helpers ajudam um bocado
Codificação limpa, correta e sustentável
Ei, isso não foi tão ruim afinal.
Fechando o buteco

  Asta La Vista Baby
      Léo Hackin
        e-mail e MSN
  leohackin@gmail.com
           Skype
        leohackin

            Blog

www.leohackin.com.br/blog
F u i ...

Contenu connexe

Tendances

Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
Apresentando o Yii Framework
Apresentando o Yii FrameworkApresentando o Yii Framework
Apresentando o Yii Frameworkangellicacardozo
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaAna Albert
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
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
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeansSliedesharessbarbosa
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
Conhecendo os Padrões De Projetos
Conhecendo os Padrões De ProjetosConhecendo os Padrões De Projetos
Conhecendo os Padrões De Projetoscejug
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPelliando dias
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da ZendDomingos Teruel
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraDavid O'Keefe
 
Performance (Web&PHP)
Performance (Web&PHP)Performance (Web&PHP)
Performance (Web&PHP)Nuno Loureiro
 

Tendances (20)

JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Apresentando o Yii Framework
Apresentando o Yii FrameworkApresentando o Yii Framework
Apresentando o Yii Framework
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
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
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
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?
 
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
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
 
Conhecendo os Padrões De Projetos
Conhecendo os Padrões De ProjetosConhecendo os Padrões De Projetos
Conhecendo os Padrões De Projetos
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 
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
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
CakePHP
CakePHPCakePHP
CakePHP
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
jsp-intro
jsp-introjsp-intro
jsp-intro
 
Performance (Web&PHP)
Performance (Web&PHP)Performance (Web&PHP)
Performance (Web&PHP)
 

En vedette

Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zeroFred Ramos
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHPFernando Palma
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDSPablo Silva
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic lilianakhjhjhjh
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPAlmir Neto
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginasMikeNandes
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrênciaPablo Silva
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basicDaniel Carrara
 

En vedette (20)

Php e mysql aplicacao completa a partir do zero
Php e mysql   aplicacao completa a partir do zeroPhp e mysql   aplicacao completa a partir do zero
Php e mysql aplicacao completa a partir do zero
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHP
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Funções em C
Funções em CFunções em C
Funções em C
 
Recursividade
RecursividadeRecursividade
Recursividade
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
 
Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Linguagem C - Uniões
Linguagem C - UniõesLinguagem C - Uniões
Linguagem C - Uniões
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basic
 

Similaire à Aprendendo CakePHP com MVC e frameworks PHP

T@rget trust microsoft asp.net mvc
T@rget trust   microsoft asp.net mvcT@rget trust   microsoft asp.net mvc
T@rget trust microsoft asp.net mvcTargettrust
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXOtávio Calaça Xavier
 
PHP e componentes reutilizáveis
PHP e componentes reutilizáveisPHP e componentes reutilizáveis
PHP e componentes reutilizáveiselliando dias
 
T@rget trust asp.net avançado
T@rget trust   asp.net avançadoT@rget trust   asp.net avançado
T@rget trust asp.net avançadoTargettrust
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxAlmir Neto
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkFlávio Lisboa
 
Desenvolvimento em Três Camadas com PHP, MVC e AJAX
Desenvolvimento em Três Camadas com PHP, MVC e AJAXDesenvolvimento em Três Camadas com PHP, MVC e AJAX
Desenvolvimento em Três Camadas com PHP, MVC e AJAXManuel Lemos
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorDaniel Brandão
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilRafael Pinheiro
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkFlávio Lisboa
 
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECAplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECRafael Pessoni
 

Similaire à Aprendendo CakePHP com MVC e frameworks PHP (20)

ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 
Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
 
T@rget trust microsoft asp.net mvc
T@rget trust   microsoft asp.net mvcT@rget trust   microsoft asp.net mvc
T@rget trust microsoft asp.net mvc
 
Asp.Net Mvc
Asp.Net MvcAsp.Net Mvc
Asp.Net Mvc
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
PHP e componentes reutilizáveis
PHP e componentes reutilizáveisPHP e componentes reutilizáveis
PHP e componentes reutilizáveis
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
T@rget trust asp.net avançado
T@rget trust   asp.net avançadoT@rget trust   asp.net avançado
T@rget trust asp.net avançado
 
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
 
Cake Php
Cake PhpCake Php
Cake Php
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
ASP .NET Core MVC
ASP .NET Core MVCASP .NET Core MVC
ASP .NET Core MVC
 
Desenvolvimento em Três Camadas com PHP, MVC e AJAX
Desenvolvimento em Três Camadas com PHP, MVC e AJAXDesenvolvimento em Três Camadas com PHP, MVC e AJAX
Desenvolvimento em Três Camadas com PHP, MVC e AJAX
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
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
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: Desenvolvedor
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágil
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECAplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
 

Plus de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Plus de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Aprendendo CakePHP com MVC e frameworks PHP

  • 1. CakePHP Aprendendo a fazer o primeiro bolo por Léo Hackin
  • 2. Cardápio Roteiro O PHP ontem e hoje Lógica x Apresentação MVC CakePHP Aplicação exemplo: Blog Conclusões
  • 3. Mamma mia! Pratos do dia PHP à Carbonara Lógica misturada a apresentação
  • 4. Eita nóis! Pratos do dia Sistema Ovo-Cozido Rápido, fácil mas sempre fede no fim
  • 5. Oxente! Pratos do dia Arrumadinho MVC Modelo-Visão-Controlador
  • 6. Agora sim... Pratos do dia E para sobremesa ... BOLO!
  • 7. Sobre o cozinheiro Léo Hackin Léo Hackin é desenvolvedor desde 96 e já passou por algumas das principais empresas de internet capixabas, desenvolvendo soluções para internet, dispositivos móveis e desktop. Apaixonado por PHP a 7 anos, atualmente trabalha como analista de soluções JavaEE para attPS Tech (São Paulo) e como Consultor em soluções para internet em empresas privadas.
  • 8. O PHP ontem e hoje O PHP ontem
  • 9. O PHP ontem e hoje O PHP ontem Linguagem para apps simples
  • 10. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões
  • 11. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões Baixa remuneração
  • 12. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões Baixa remuneração Consistência discutível
  • 13. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões Baixa remuneração Consistência discutível Falta de padrões de design
  • 14. O PHP ontem e hoje O PHP ontem Linguagem para apps simples POGramadores doidões Baixa remuneração Consistência discutível Falta de padrões de design
  • 15. O PHP ontem e Hoje Agravantes
  • 16. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação
  • 17. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação Rápido == feito nas coxas
  • 18. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação Rápido == feito nas coxas Paradigma mal resolvido (Estrutural x OO)
  • 19. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação Rápido == feito nas coxas Paradigma mal resolvido (Estrutural x OO) Script Kiddies, sobrinhos e “amigos que mexem com informática”
  • 20. O PHP ontem e Hoje Agravantes Falta de conhecimento teórico de programação Rápido == feito nas coxas Paradigma mal resolvido (Estrutural x OO) Script Kiddies, sobrinhos e “amigos que mexem com informática” Herança estrutural: funções redundantes, includes, etc ...
  • 21. O PHP ontem e Hoje O PHP hoje
  • 22. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas
  • 23. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro
  • 24. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro Remuneração “de gente”
  • 25. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro Remuneração “de gente” Montes e montes de documentação
  • 26. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro Remuneração “de gente” Montes e montes de documentação N projetos ... FRAMEWORKS!
  • 27. O PHP ontem e Hoje O PHP hoje Maturidade para soluções corporativas OO verdadeiro Remuneração “de gente” Montes e montes de documentação O tempo passa! O tempo voa! N projetos ... FRAMEWORKS!
  • 31. Lógica x Apresentação Ops... Problemas! Codificação e manutenção custosa Quebra pau com designers Redundância de métodos, funções, includes ... Despadronização é ruim!!! Segmentação da lógica
  • 32. Lógica x Apresentação Ops... Problemas! PHP à Carbonara
  • 33. Lógica x Apresentação Ops... Problemas! = PHP à Carbonara
  • 35. MVC O que é MVC Padrão de arquitetura de software
  • 36. MVC O que é MVC Padrão de arquitetura de software Separação da aplicação em três partes:
  • 37. MVC O que é MVC Padrão de arquitetura de software Separação da aplicação em três partes: Os dados da aplicação
  • 38. MVC O que é MVC Padrão de arquitetura de software Separação da aplicação em três partes: Os dados da aplicação A apresentação da informação
  • 39. MVC O que é MVC Padrão de arquitetura de software Separação da aplicação em três partes: Processa os eventos da aplicação Os dados da aplicação A apresentação da informação
  • 41. MVC Características Base funcional para toda a aplicação
  • 42. MVC Características Base funcional para toda a aplicação Conjunto de ferramentas, classes ...
  • 43. MVC Características Base funcional para toda a aplicação Conjunto de ferramentas, classes ... Consistência e produtividade
  • 44. MVC Características Base funcional para toda a aplicação Conjunto de ferramentas, classes ... Consistência e produtividade Desenvolvimento em paralelo
  • 45. MVC Características Base funcional para toda a aplicação Conjunto de ferramentas, classes ... Consistência e produtividade Desenvolvimento em paralelo Manutenção e escalabilidade menos custosa
  • 47. MVC Como funciona, tio ? Browser envia requisição à aplicação
  • 48. MVC Como funciona, tio ? Browser envia requisição à aplicação http://site/hello
  • 49. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação http://site/hello
  • 50. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação http://site/hello
  • 51. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller Mysql, Postgres, Oracle e muitos outros http://site/hello
  • 52. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller O controller então seleciona a view correspondente a ação Mysql, Postgres, Oracle e muitos outros http://site/hello
  • 53. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller O controller então seleciona a view correspondente a ação O controller renderiza a view Mysql, Postgres, incluindo os dados de resposta Oracle e muitos da ação outros http://site/hello
  • 54. MVC Como funciona, tio ? Browser envia requisição à aplicação O controller processa a ação O controller processa a requisição e acessa a lógica de negócio (model) da aplicação O model acessa a base de dados da aplicação para executar a ação requisitada pelo controller O controller então seleciona a view correspondente a ação O controller renderiza a view Mysql, Postgres, incluindo os dados de resposta Oracle e muitos da ação outros O controller devolve a resposta para o browser http://site/hello
  • 56. CakePHP O que é CakePHP CakePHP é um framework de desenvolvimento rápido para PHP que provê uma arquitetura extensível para desenvolvimento, manutenção e implantação de aplicacões. Usando padrões de projeto como MVC e ORM com “convenção ao invés de configuração”, o CakePHP reduz custos de desenvolvimento e ajuda desenvolvedores a “escrever menos código”.
  • 57. CakePHP O que é CakePHP
  • 58. CakePHP O que é CakePHP Compatível com PHP 4 e 5
  • 59. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC
  • 60. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros
  • 61. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ...
  • 62. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado
  • 63. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado ActiveRecord (ORM)
  • 64. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado ActiveRecord (ORM) Internacionalização
  • 65. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado ActiveRecord (ORM) Internacionalização Comunidade ativa e crescente
  • 66. CakePHP O que é CakePHP Compatível com PHP 4 e 5 Arquitetura MVC Helpers Ajax, HTML, JS e outros Componentes nativos para Email, Sessões, Segurança ... CRUD (Create-Read-Update-Delete) integrado ActiveRecord (ORM) Ativa e crescente ? NOFA! Internacionalização Eu quero! Comunidade ativa e crescente
  • 67. CakePHP Requisitos mínimos Um computador =) Servidor HTTP (Apache 2) PHP4 ou PHP5 Base de dados (opcional) MySQL, Postgres, SQL Server, Oracle, SQLite, ODBC, ADOdb, Firebird DB2 Café, chá ou suco (opcional)
  • 68. CakePHP Instalando Baixar o CakePHP (http://cakephp.org) Descompactar o arquivo em seu servidor web
  • 69. CakePHP Instalando Configurar o http.conf
  • 70. CakePHP Instalando Configurar o http.conf
  • 71. CakePHP Instalando Configurar o http.conf
  • 72. CakePHP Instalando Configurar o http.conf
  • 73. CakePHP Instalando Configurar o http.conf
  • 74. CakePHP Instalando Execute e teste!
  • 77. CakePHP Estrutura Funcional Model View Controller
  • 78. CakePHP Estrutura Funcional Model Behaviors e Datasources View Helpers e Elements Controller Components
  • 80. CakePHP Estrutura de Arquivos config - configuração da app (banco, conf. núcleo, etc) controllers - controles da app locale - strings de internacionalização models - modelos da app plugins - pacotes de plugins tmp - local de arquivos temporários vendors - aplicativos de terceiros views - views do sistema webroot - raiz da aplicação
  • 81. CakePHP Estrutura de Arquivos config - configuração da app (banco, conf. núcleo, etc) controllers - controles da app locale - strings de internacionalização models - modelos da app plugins - pacotes de plugins tmp - local de arquivos temporários vendors - aplicativos de terceiros views - views do sistema webroot - raiz da aplicação
  • 82. Aplicação exemplo: Blog O primeiro bolo Aplicação de blog Listar Inserir Editar Deletar O primeiro a gente NUNCA esquece ...
  • 83. Aplicação exemplo: Blog Conf. base no Cake app/config/database.php.default app/config/database.php
  • 84. Aplicação exemplo: Blog Criando o model Criar tabela na database escolhida
  • 85. Aplicação exemplo: Blog Criando o model app/models/post.php
  • 86. Aplicação exemplo: Blog Convenções MODEL Nome da tabela SEMPRE no plural (ex.: model post -> tabela posts) Toda tabela deve possuir a chave primária id (auto-numérica ou com 36 caracteres) CONTROLLER Nome SEMPRE no plural (ex.: model post -> controller posts) Nome do arquivo no padrão <model no plural>_controller.php
  • 87. Aplicação exemplo: Blog Criando o controller app/controllers/posts_controller.php
  • 88. Aplicação exemplo: Blog Criando uma views app/views/posts/index.ctp - listagem dos posts
  • 89. Aplicação exemplo: Blog Criando uma views app/views/posts/index.ctp - listagem dos posts helper $html->link
  • 90. Aplicação exemplo: Blog Acessando a ação http://localhost/posts
  • 91. Aplicação exemplo: Blog Acessando a ação http://localhost/posts host
  • 92. Aplicação exemplo: Blog Acessando a ação controller http://localhost/posts host
  • 94. Aplicação exemplo: Blog Adicionando ações app/controllers/posts_controller.php
  • 95. Aplicação exemplo: Blog Adicionando ações app/views/posts/view.ctp
  • 96. Aplicação exemplo: Blog Acessando a ação http://localhost/posts/view/2
  • 97. Aplicação exemplo: Blog Acessando a ação http://localhost/posts/view/2 host
  • 98. Aplicação exemplo: Blog Acessando a ação controller http://localhost/posts/view/2 host
  • 99. Aplicação exemplo: Blog Acessando a ação controller ação http://localhost/posts/view/2 host
  • 100. Aplicação exemplo: Blog Acessando a ação controller ação http://localhost/posts/view/2 host ID
  • 102. Aplicação exemplo: Blog Modificando o layout Layout View Elements
  • 103. Aplicação exemplo: Blog Modificando o layout Layout View Elements
  • 104. Aplicação exemplo: Blog Modificando o layout Layout View Elements
  • 105. Aplicação exemplo: Blog Modificando o layout Layout View Elements
  • 107. Aplicação exemplo: Blog Modificando o layout conteúdo da view
  • 108. Aplicação exemplo: Blog Modificando o layout Antes Depois
  • 109. Aplicação exemplo: Blog Adicionando um post app/controllers/posts_controller.php
  • 110. Aplicação exemplo: Blog Adicionando um post app/views/posts/add.ctp
  • 111. Aplicação exemplo: Blog Adicionando um post app/views/posts/add.ctp FormHelper
  • 112. Aplicação exemplo: Blog Adicionando um post app/views/posts/index.ctp
  • 113. Aplicação exemplo: Blog Adicionando um post app/views/posts/index.ctp
  • 115. Aplicação exemplo: Blog Validação de campos app/models/post.php
  • 116. Aplicação exemplo: Blog Validação de campos app/models/post.php validação
  • 119. Aplicação exemplo: Blog Deletando um post app/controllers/posts_controller.php
  • 120. Aplicação exemplo: Blog Deletando um post app/views/posts/index.ctp
  • 121. Aplicação exemplo: Blog Deletando um post app/views/posts/index.ctp confirma a operação
  • 123. Aplicação exemplo: Blog Editando um post app/controllers/posts_controller.php
  • 124. Aplicação exemplo: Blog Editando um post app/views/posts/edit.ctp
  • 125. Aplicação exemplo: Blog Editando um post app/views/posts/edit.ctp
  • 126. Aplicação exemplo: Blog Editando um post app/views/posts/index.ctp
  • 127. Aplicação exemplo: Blog Editando um post app/views/posts/index.ctp e tome helper
  • 129. Extras CRUD e Scaffolding app/model/comment.php app/model/comment.php
  • 130. Extras CRUD via Scaffolding Vantagens Desvantagens
  • 131. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Desvantagens
  • 132. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Pode ser usado numa app em producão Desvantagens
  • 133. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Pode ser usado numa app em producão Mamão com açucar!! Desvantagens
  • 134. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Pode ser usado numa app em producão Mamão com açucar!! Desvantagens Não foi feito para ser flexível
  • 135. Extras CRUD via Scaffolding Vantagens Ótimo para prototipar aplicações Pode ser usado numa app em producão Mamão com açucar!! Desvantagens Não foi feito para ser flexível Baixa segurança (em seu estado default)
  • 136. Extras CRUD via Bake $ cd ./cake/console $ ./cake bake
  • 137. Extras CRUD via Bake Vantagens Desvantagens
  • 138. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Desvantagens
  • 139. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Ao contrário do scaffold, cria arquivos reais na app Desvantagens
  • 140. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Ao contrário do scaffold, cria arquivos reais na app Extremamente poderoso e funcional Desvantagens
  • 141. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Ao contrário do scaffold, cria arquivos reais na app Extremamente poderoso e funcional Permite configurar os modelos Desvantagens
  • 142. Extras CRUD via Bake Vantagens Cria “esqueletos” de models, views e controllers Ao contrário do scaffold, cria arquivos reais na app Extremamente poderoso e funcional Permite configurar os modelos Desvantagens Acostuma mal! :)
  • 144. Fechando o buteco Conclusões Fácil de codificar
  • 145. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade
  • 146. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold)
  • 147. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold) Arquitetura consistente e flexível
  • 148. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold) Arquitetura consistente e flexível Helpers ajudam um bocado
  • 149. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold) Arquitetura consistente e flexível Helpers ajudam um bocado Codificação limpa, correta e sustentável
  • 150. Fechando o buteco Conclusões Fácil de codificar ORM e MVC aumentam a produtividade Ferramentas de prototipação poderosas (bake/scaffold) Arquitetura consistente e flexível Helpers ajudam um bocado Codificação limpa, correta e sustentável Ei, isso não foi tão ruim afinal.
  • 151. Fechando o buteco Asta La Vista Baby Léo Hackin e-mail e MSN leohackin@gmail.com Skype leohackin Blog www.leohackin.com.br/blog
  • 152. F u i ...