SlideShare una empresa de Scribd logo
1 de 67
Descargar para leer sin conexión
E-commerce
mais simples do que parece




Michael Granados - @dgmike
Então...
você tem
uma idéia,
mas...


Por onde começar?
Seja rápido


Quanto mais tempo demorar para começar sua
startup mais você estará jogando dinheiro fora!

Inicie seu negócio enquanto antes, seu lucro só
 virá depois que você se lançar definitivamente

            Desenvolvimento ágil
Programador preguiçoso?
O seu trabalho é deixar com que as pessoas façam
                 menos esforços

           Inspire-se em você mesmo
Uma idéia!
e-commerce
E-commerce pronto?
●   Magento
●   Joomla + VirtueMart
●   WordPress + WP-shopping-cart
●   Django + Sathmo
●   Loja Locaweb
●   OsCommerce
●   PretaShop
●   ...
O ambiente
O ambiente
●   Sistema de controle de versão - GIT
●   Linguagem forte e madura – PHP
●   Banco de dados – MySQL
●   Servidor – Apache
Controle de versão – existem vários
●   Subversion
●   Bazaar
●   Git
●   Mercuial
●   CVS
Como funciona?
Como funciona?



       FTP
Como funciona?



                       FTP
Skywalker




              UPLOAD
Como funciona?



       FTP
Como funciona?
           Corrige BUG online


       FTP
Como funciona?



        FTP      Darth Vader




      UPLOAD
Como funciona?
REPOSITÓRIO
Como funciona?
    REPOSITÓRIO


                1




Skywalker   Darth Vader
Como funciona?
    REPOSITÓRIO


              1


             clone

1                 1
Como funciona?
    REPOSITÓRIO


              2



      push
2                 1
Como funciona?
    REPOSITÓRIO


              2



             push
2                 1
Como funciona?
    REPOSITÓRIO


              2




2                 1
Como funciona?
    REPOSITÓRIO


              2



             pull
2                   2
Como funciona?
    REPOSITÓRIO


              3



             push
2                 3
Como funciona?
REPOSITÓRIO                  SERVIDOR


                clone/pull



              push
Framework – vantagens
●   Métodos mágicos que auxiliam no
    desenvolvimento
●   Regras que ajudam a manter a organização
    dos arquivos – geralmente MVC
●   Gama de interfaces para bancos de dados
●   Helpers que libertam-te de escrever código
●   Scripts que geram boa parte do código
●   Gerenciamento de cache – deixando a
    aplicação mais rápida
Framework – desvantagens
●   Você precisa aprender uma nova lingua
●   O fato dos scripts gerarem boa parte do código
    interfere em sua criação
●   Regras que nem sempre se aplicam a seu
    negócio
●   Criação de demasiados arquivos que nem
    sempre são necessários
Frameworks - exemplos
●   Zend Framework
●   CodeIgniter
●   CakePHP
●   Synphony
●   Spaghetti*
●   VórticePHP
Proposta, um microframework

●   Público: github
●   Organização: MVC – Model, View, Control
●   Gerenciamento de URLs
O que o framework terá
●   Manipular Banco de Dados
●   Métodos mágicos definidos por você
●   Reaproveitamento de código
●   URLs amigáveis
●   Segurança
●   Fácil de entender
●   Simples de fazer manutenção
M de MVC – Model
Iremos usar PDO (PHP Database Object) como
base para o Model

●   Suporte para vários bancos de dados
●   Nativo desde o PHP5.2
●   Extensível
●   Orientado a Objetos
●   Fácil de usar
M de MVC – Model
Vários bancos, apenas um objeto


new PDO(‘mysql:dbname=banco;host=localhost’,
‘usuario’, ‘senha’);


new PDO(‘sqlite:/opt/database/mydb.sq3’);
Helper – pau pra toda obra!
function error() {
    die('Internal Server Error.');
}


function url($uri) {
    return BASE_URL.$uri;
}


function valor($numero) {
    return "R$ ".number_format($numero);
}
Mapeamento de URLs – URLs
            amigáveis
$urls = array(
     # 'Expressão regular'   => “Controller”
     '^/?$'                  => 'Inicio',
     '^/categoria/(d+)/?$' => 'Categoria',
     '^/produto/(d+)/?$'    => 'Produto',
);
Abracadabra: a mágica!
$url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';


foreach ($urls as $regexp => $class) {
    if (preg_match("@$regexp@", $url, $atributos)) {
           if (class_exists($class)) {
               array_shift($atributos);
               $method = $_POST ? 'post' : 'get';
               $class   = new $class;
               call_user_func_array(array($class, $method), $atributos);
               die();
           }
    }
}
error();
Abracadabra: a mágica!
$url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';


foreach ($urls as $regexp => $class) {
    if (preg_match("@$regexp@", $url, $atributos)) {
           if (class_exists($class)) {
               array_shift($atributos);
               $method = $_POST ? 'post' : 'get';
               $class   = new $class;
               call_user_func_array(array($class, $method), $atributos);
               die();
           }
    }
}
error();
Abracadabra: a mágica!
$url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';


foreach ($urls as $regexp => $class) {
    if (preg_match("@$regexp@", $url, $atributos)) {
           if (class_exists($class)) {
               array_shift($atributos);
               $method = $_POST ? 'post' : 'get';
               $class   = new $class;
               call_user_func_array(array($class, $method), $atributos);
               die();
           }
    }
}
error();
Abracadabra: a mágica!
$url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';


foreach ($urls as $regexp => $class) {
    if (preg_match("@$regexp@", $url, $atributos)) {
           if (class_exists($class)) {
               array_shift($atributos);
               $method = $_POST ? 'post' : 'get';
               $class   = new $class;
               call_user_func_array(array($class, $method), $atributos);
               die();
           }
    }
}
error();
Abracadabra: a mágica!
$url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';


foreach ($urls as $regexp => $class) {
    if (preg_match("@$regexp@", $url, $atributos)) {
           if (class_exists($class)) {
               array_shift($atributos);
               $method = $_POST ? 'post' : 'get';
               $class   = new $class;
               call_user_func_array(array($class, $method), $atributos);
               die();
           }
    }
}
error();
Abracadabra: a mágica!
$url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';


foreach ($urls as $regexp => $class) {
    if (preg_match("@$regexp@", $url, $atributos)) {
           if (class_exists($class)) {
               array_shift($atributos);
               $method = $_POST ? 'post' : 'get';
               $class   = new $class;
               call_user_func_array(array($class, $method), $atributos);
               die();
           }
    }
}
error();
Abracadabra: a mágica!
$url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';


foreach ($urls as $regexp => $class) {
    if (preg_match("@$regexp@", $url, $atributos)) {
           if (class_exists($class)) {
               array_shift($atributos);
               $method = $_POST ? 'post' : 'get';
               $class   = new $class;
               call_user_func_array(array($class, $method), $atributos);
               die();
           }
    }
}
error();
Abracadabra: a mágica!
$url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';


foreach ($urls as $regexp => $class) {
    if (preg_match("@$regexp@", $url, $atributos)) {
           if (class_exists($class)) {
               array_shift($atributos);
               $method = $_POST ? 'post' : 'get';
               $class   = new $class;
               call_user_func_array(array($class, $method), $atributos);
               die();
           }
    }
}
error();
O resultado!
class Inicio {
    function get($attr1, $attr2, $attr3) {
        // seu controller
    }
    function post() { // opcional


    }
}
O resultado!
class Inicio { # controller
    function get($attr1, $attr2, $attr3) {
        // seu controller
    }
    function post() { // opcional


    }
}
O resultado!
class Inicio {
    function get($attr1, $attr2, $attr3) {
        // seu controller
    }
    function post() { // opcional


    }
}
O resultado!
class Inicio {
    function get($attr1, $attr2, $attr3) {
        // seu controller
    }
    function post() { // opcional


    }
}
Template: aproveitando os métodos
             mágicos
Adicionando um produto
class Adiciona {

    public function get($id, $ajax = false) {

        $con =& get_con();

        if (!$con->produto($id)) {

            error();

        }

        if (isset($_SESSION['carrinho'][$id])) {

            $_SESSION['carrinho'][$id]++;

        } else {

            $_SESSION['carrinho'][$id] = 1;

        }

        header('Location: '.url('carrinho'));

    }

}
E-commerce pronto?!

Para que o e-commerce esteja pronto de fato, falta
apenas um detalhe: o comprador deve comprar




   Vamos por a mão na massa!!!
Formas de pagamento

Boleto bancário
Cartão de crédito
Cartões de débito
Transação entre contas...



... ou usar o PagSeguro
PagSeguro: como funciona?
PagSeguro: como funciona?
PagSeguro: como funciona?



          Pague com o
           PagSeguro
PagSeguro: como funciona?



Pague com o   POST
 PagSeguro
E o tal do retorno?


    Usuário - POST
E o tal do retorno?


    Usuário - POST




    Usuário - GET
E o tal do retorno?


       Usuário - POST




       Usuário - GET




Robô
POST
E o tal do retorno?


                 Usuário - POST




                 Usuário - GET



Bad Guy
 POST?    Robô
          POST
E o tal do retorno?


                 Usuário - POST




                 Usuário - GET

                 POST – TOKEN

Bad Guy
 POST?    Robô
          POST


                                  VERIFICADO/FALSO
Na pática, use a biblioteca

A Visie possui uma ótima biblioteca que gera o
formulário de forma simples


     http://visie.com.br/pagseguro/php.php


          http://github.com/pagseguro
#comofas?

require_once('pagseguro/pgs.php');
$cod = uniqid(true);
$pgs = new Pgs(array(
      'email_cobranca' => 'mike@visie.com.br',
      'tipo'     => 'CP',
      'ref_transacao' => $cod,
));
#comofas?
foreach ($_SESSION['carrinho'] as $id => $qtd) {
            $produto = $con->produto($id);
            $pgs->adicionar(array(
                   'id'          => $produto->id,
                   'descricao'   => $produto->nome,
                   'valor'       => $produto->valor,
                   'quantidade' => $qtd,
             ));
}
Melhoria: brincando com JS

$pgs->mostra(array(
      'open_form' => false,
      'show_submit' => false
));


document.forms[0].submit();
#comofas Retorno automático

Use o cod_referencia
Passo final: Publicando!

Com o controle de versão e um servidor bom,
tudo fica mais fácil!
Faça o clone do projeto no servidor
Import do banco de dados
Divulgue!
Links

http://dgmike.com.br/dgeco
http://slideshare.com/dgmike
http://github.com/dgmike/dgeco
Referências
http://php.net/
http://br.php.net/pdo
http://github.com/
http://learn.github.com/
http://visie.com.br/pagseguro
http://www.generatedata.com/
http://tinyurl.com/mkmu58 (W3C: HTML5)
Perguntas?!


http://meadiciona.com/dgmike
 http://formspring.me/dgmike
         @dgmike

Más contenido relacionado

La actualidad más candente

PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPGuilherme Blanco
 
Orientação a Objetos em PHP
Orientação a Objetos em PHPOrientação a Objetos em PHP
Orientação a Objetos em PHPzehzinho
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicaçãoAntonio Spinelli
 
Da Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualDa Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualMichael Castillo Granados
 
Criando controle de acesso com php e my sql
Criando controle de acesso com php e my sqlCriando controle de acesso com php e my sql
Criando controle de acesso com php e my sqlPaulo Damas
 
Hooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPressHooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPressZé Fontainhas
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Luis Gustavo Almeida
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraFlávio Lisboa
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidademetzen
 
Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2garux
 
Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesStanislaw Pusep
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5garux
 
Fugindo das armadilhas do MVC
Fugindo das armadilhas do MVCFugindo das armadilhas do MVC
Fugindo das armadilhas do MVCEdiaimo Borges
 

La actualidad más candente (19)

Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 
Orientação a Objetos em PHP
Orientação a Objetos em PHPOrientação a Objetos em PHP
Orientação a Objetos em PHP
 
jQuery na Prática!
jQuery na Prática!jQuery na Prática!
jQuery na Prática!
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicação
 
Da Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualDa Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtual
 
Criando controle de acesso com php e my sql
Criando controle de acesso com php e my sqlCriando controle de acesso com php e my sql
Criando controle de acesso com php e my sql
 
Hooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPressHooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPress
 
Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
Bread board
Bread boardBread board
Bread board
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidade
 
Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2
 
Minicurso de jQuery
Minicurso de jQueryMinicurso de jQuery
Minicurso de jQuery
 
Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testes
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
 
Fugindo das armadilhas do MVC
Fugindo das armadilhas do MVCFugindo das armadilhas do MVC
Fugindo das armadilhas do MVC
 

Similar a Ecommerce, mais simples do que parece

Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroMichael Castillo Granados
 
Programação web ii aulas 06 e 07
Programação web ii   aulas 06 e 07Programação web ii   aulas 06 e 07
Programação web ii aulas 06 e 07Yuri Bispo
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHPAugusto das Neves
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesCarlos Santos
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisCarlos Santos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09Carlos Santos
 

Similar a Ecommerce, mais simples do que parece (20)

Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguro
 
Curso de Introdução - PHP
Curso de Introdução - PHPCurso de Introdução - PHP
Curso de Introdução - PHP
 
Programação web ii aulas 06 e 07
Programação web ii   aulas 06 e 07Programação web ii   aulas 06 e 07
Programação web ii aulas 06 e 07
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
PHP ao Extremo
PHP ao ExtremoPHP ao Extremo
PHP ao Extremo
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - Funções
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Aula 02 - Curso PHP e MySQL
Aula 02 - Curso PHP e MySQLAula 02 - Curso PHP e MySQL
Aula 02 - Curso PHP e MySQL
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
 
Php 05 Mvc
Php 05 MvcPhp 05 Mvc
Php 05 Mvc
 
Php curl - Coleta de dados na web
Php curl - Coleta de dados na webPhp curl - Coleta de dados na web
Php curl - Coleta de dados na web
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 

Más de Impacta Eventos

A Falência do Modelo Atual do EAD
A Falência do Modelo Atual do EADA Falência do Modelo Atual do EAD
A Falência do Modelo Atual do EADImpacta Eventos
 
Sistemas de Informação Fator de Vantagem Competitiva para as Organizações
Sistemas de Informação Fator de Vantagem Competitiva para as OrganizaçõesSistemas de Informação Fator de Vantagem Competitiva para as Organizações
Sistemas de Informação Fator de Vantagem Competitiva para as OrganizaçõesImpacta Eventos
 
Geração “Y” e “Z” A Falência do Administrador Nasce um Novo Modelo de Gestão
Geração “Y” e “Z” A Falência do Administrador Nasce um Novo Modelo de GestãoGeração “Y” e “Z” A Falência do Administrador Nasce um Novo Modelo de Gestão
Geração “Y” e “Z” A Falência do Administrador Nasce um Novo Modelo de GestãoImpacta Eventos
 
Certificação LPI: qual sua importância no mercado de trabalho?
Certificação LPI: qual sua importância no mercado de trabalho?Certificação LPI: qual sua importância no mercado de trabalho?
Certificação LPI: qual sua importância no mercado de trabalho?Impacta Eventos
 
A produção editorial e os profissionais de criação.
A produção editorial e os profissionais de criação.A produção editorial e os profissionais de criação.
A produção editorial e os profissionais de criação.Impacta Eventos
 
Inteligencia Corporativa - Alex Fontes
Inteligencia Corporativa - Alex FontesInteligencia Corporativa - Alex Fontes
Inteligencia Corporativa - Alex FontesImpacta Eventos
 
Empregabilidade no mundo SAP - Adriana Manetti
Empregabilidade no mundo SAP - Adriana ManettiEmpregabilidade no mundo SAP - Adriana Manetti
Empregabilidade no mundo SAP - Adriana ManettiImpacta Eventos
 
Tirando Sua Ideia do Papel - Lições aprendidas com a Startup MeuCarrinho - An...
Tirando Sua Ideia do Papel - Lições aprendidas com a Startup MeuCarrinho - An...Tirando Sua Ideia do Papel - Lições aprendidas com a Startup MeuCarrinho - An...
Tirando Sua Ideia do Papel - Lições aprendidas com a Startup MeuCarrinho - An...Impacta Eventos
 
U-Start - quando grandes ideias encontram grandes investidores - Luiz Rinke
U-Start - quando grandes ideias encontram grandes investidores - Luiz RinkeU-Start - quando grandes ideias encontram grandes investidores - Luiz Rinke
U-Start - quando grandes ideias encontram grandes investidores - Luiz RinkeImpacta Eventos
 
Por que programar para mobile cópia
Por que programar para mobile cópiaPor que programar para mobile cópia
Por que programar para mobile cópiaImpacta Eventos
 
Impacta Empreenda 360 - Programa Start-Up Brasil
Impacta Empreenda 360 - Programa Start-Up BrasilImpacta Empreenda 360 - Programa Start-Up Brasil
Impacta Empreenda 360 - Programa Start-Up BrasilImpacta Eventos
 
Oportunidades de Carreiras no E-Commerce
Oportunidades de Carreiras no E-CommerceOportunidades de Carreiras no E-Commerce
Oportunidades de Carreiras no E-CommerceImpacta Eventos
 
As estratégias de Marketing para E-Commerce - Hellison Lemos (Mercado Livre)
As estratégias de Marketing para E-Commerce - Hellison Lemos (Mercado Livre)As estratégias de Marketing para E-Commerce - Hellison Lemos (Mercado Livre)
As estratégias de Marketing para E-Commerce - Hellison Lemos (Mercado Livre)Impacta Eventos
 
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Impacta Eventos
 
O Arquiteto da Informação no Brasil e no Exterior, Desafios & Perspectivas - ...
O Arquiteto da Informação no Brasil e no Exterior, Desafios & Perspectivas - ...O Arquiteto da Informação no Brasil e no Exterior, Desafios & Perspectivas - ...
O Arquiteto da Informação no Brasil e no Exterior, Desafios & Perspectivas - ...Impacta Eventos
 
E-Commerce e Mídias Sociais Combinam? Diego Monteiro (Scup)
E-Commerce e Mídias Sociais Combinam? Diego Monteiro (Scup)E-Commerce e Mídias Sociais Combinam? Diego Monteiro (Scup)
E-Commerce e Mídias Sociais Combinam? Diego Monteiro (Scup)Impacta Eventos
 
Panorama do E-Commerce no Brasil - Alexandre Miranda
Panorama do E-Commerce no Brasil - Alexandre MirandaPanorama do E-Commerce no Brasil - Alexandre Miranda
Panorama do E-Commerce no Brasil - Alexandre MirandaImpacta Eventos
 

Más de Impacta Eventos (20)

A Falência do Modelo Atual do EAD
A Falência do Modelo Atual do EADA Falência do Modelo Atual do EAD
A Falência do Modelo Atual do EAD
 
Sistemas de Informação Fator de Vantagem Competitiva para as Organizações
Sistemas de Informação Fator de Vantagem Competitiva para as OrganizaçõesSistemas de Informação Fator de Vantagem Competitiva para as Organizações
Sistemas de Informação Fator de Vantagem Competitiva para as Organizações
 
Geração “Y” e “Z” A Falência do Administrador Nasce um Novo Modelo de Gestão
Geração “Y” e “Z” A Falência do Administrador Nasce um Novo Modelo de GestãoGeração “Y” e “Z” A Falência do Administrador Nasce um Novo Modelo de Gestão
Geração “Y” e “Z” A Falência do Administrador Nasce um Novo Modelo de Gestão
 
Certificação LPI: qual sua importância no mercado de trabalho?
Certificação LPI: qual sua importância no mercado de trabalho?Certificação LPI: qual sua importância no mercado de trabalho?
Certificação LPI: qual sua importância no mercado de trabalho?
 
A produção editorial e os profissionais de criação.
A produção editorial e os profissionais de criação.A produção editorial e os profissionais de criação.
A produção editorial e os profissionais de criação.
 
Inteligencia Corporativa - Alex Fontes
Inteligencia Corporativa - Alex FontesInteligencia Corporativa - Alex Fontes
Inteligencia Corporativa - Alex Fontes
 
Empregabilidade no mundo SAP - Adriana Manetti
Empregabilidade no mundo SAP - Adriana ManettiEmpregabilidade no mundo SAP - Adriana Manetti
Empregabilidade no mundo SAP - Adriana Manetti
 
Tirando Sua Ideia do Papel - Lições aprendidas com a Startup MeuCarrinho - An...
Tirando Sua Ideia do Papel - Lições aprendidas com a Startup MeuCarrinho - An...Tirando Sua Ideia do Papel - Lições aprendidas com a Startup MeuCarrinho - An...
Tirando Sua Ideia do Papel - Lições aprendidas com a Startup MeuCarrinho - An...
 
U-Start - quando grandes ideias encontram grandes investidores - Luiz Rinke
U-Start - quando grandes ideias encontram grandes investidores - Luiz RinkeU-Start - quando grandes ideias encontram grandes investidores - Luiz Rinke
U-Start - quando grandes ideias encontram grandes investidores - Luiz Rinke
 
Por que programar para mobile cópia
Por que programar para mobile cópiaPor que programar para mobile cópia
Por que programar para mobile cópia
 
Lean no bullshit
Lean no bullshitLean no bullshit
Lean no bullshit
 
Viva o Mobile!
Viva o Mobile! Viva o Mobile!
Viva o Mobile!
 
Impacta Empreenda 360 - Programa Start-Up Brasil
Impacta Empreenda 360 - Programa Start-Up BrasilImpacta Empreenda 360 - Programa Start-Up Brasil
Impacta Empreenda 360 - Programa Start-Up Brasil
 
Seguranca impacta
Seguranca impactaSeguranca impacta
Seguranca impacta
 
Oportunidades de Carreiras no E-Commerce
Oportunidades de Carreiras no E-CommerceOportunidades de Carreiras no E-Commerce
Oportunidades de Carreiras no E-Commerce
 
As estratégias de Marketing para E-Commerce - Hellison Lemos (Mercado Livre)
As estratégias de Marketing para E-Commerce - Hellison Lemos (Mercado Livre)As estratégias de Marketing para E-Commerce - Hellison Lemos (Mercado Livre)
As estratégias de Marketing para E-Commerce - Hellison Lemos (Mercado Livre)
 
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
 
O Arquiteto da Informação no Brasil e no Exterior, Desafios & Perspectivas - ...
O Arquiteto da Informação no Brasil e no Exterior, Desafios & Perspectivas - ...O Arquiteto da Informação no Brasil e no Exterior, Desafios & Perspectivas - ...
O Arquiteto da Informação no Brasil e no Exterior, Desafios & Perspectivas - ...
 
E-Commerce e Mídias Sociais Combinam? Diego Monteiro (Scup)
E-Commerce e Mídias Sociais Combinam? Diego Monteiro (Scup)E-Commerce e Mídias Sociais Combinam? Diego Monteiro (Scup)
E-Commerce e Mídias Sociais Combinam? Diego Monteiro (Scup)
 
Panorama do E-Commerce no Brasil - Alexandre Miranda
Panorama do E-Commerce no Brasil - Alexandre MirandaPanorama do E-Commerce no Brasil - Alexandre Miranda
Panorama do E-Commerce no Brasil - Alexandre Miranda
 

Último

Brochura template para utilizar em eventos
Brochura template para utilizar em eventosBrochura template para utilizar em eventos
Brochura template para utilizar em eventosnpbbbb
 
Conferência SC 24 | O custo real de uma operação
Conferência SC 24 | O custo real de uma operaçãoConferência SC 24 | O custo real de uma operação
Conferência SC 24 | O custo real de uma operaçãoE-Commerce Brasil
 
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptxDesenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptxCoca Pitzer
 
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?Michael Rada
 
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...E-Commerce Brasil
 
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaConferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaE-Commerce Brasil
 
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...E-Commerce Brasil
 
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024E-Commerce Brasil
 
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendasConferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendasE-Commerce Brasil
 
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...E-Commerce Brasil
 
Despertar SEBRAE [PROFESSOR] (1).pdfccss
Despertar SEBRAE [PROFESSOR] (1).pdfccssDespertar SEBRAE [PROFESSOR] (1).pdfccss
Despertar SEBRAE [PROFESSOR] (1).pdfccssGuilhermeMelo381677
 
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?E-Commerce Brasil
 
Catálogo de Produtos OceanTech 2024 - Atualizado
Catálogo de Produtos OceanTech 2024 - AtualizadoCatálogo de Produtos OceanTech 2024 - Atualizado
Catálogo de Produtos OceanTech 2024 - AtualizadoWagnerSouza717812
 
Conferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoConferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoE-Commerce Brasil
 

Último (14)

Brochura template para utilizar em eventos
Brochura template para utilizar em eventosBrochura template para utilizar em eventos
Brochura template para utilizar em eventos
 
Conferência SC 24 | O custo real de uma operação
Conferência SC 24 | O custo real de uma operaçãoConferência SC 24 | O custo real de uma operação
Conferência SC 24 | O custo real de uma operação
 
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptxDesenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
 
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
 
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
 
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaConferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
 
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
 
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
 
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendasConferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
 
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
 
Despertar SEBRAE [PROFESSOR] (1).pdfccss
Despertar SEBRAE [PROFESSOR] (1).pdfccssDespertar SEBRAE [PROFESSOR] (1).pdfccss
Despertar SEBRAE [PROFESSOR] (1).pdfccss
 
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
 
Catálogo de Produtos OceanTech 2024 - Atualizado
Catálogo de Produtos OceanTech 2024 - AtualizadoCatálogo de Produtos OceanTech 2024 - Atualizado
Catálogo de Produtos OceanTech 2024 - Atualizado
 
Conferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoConferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelização
 

Ecommerce, mais simples do que parece

  • 1. E-commerce mais simples do que parece Michael Granados - @dgmike
  • 3. Seja rápido Quanto mais tempo demorar para começar sua startup mais você estará jogando dinheiro fora! Inicie seu negócio enquanto antes, seu lucro só virá depois que você se lançar definitivamente Desenvolvimento ágil
  • 4. Programador preguiçoso? O seu trabalho é deixar com que as pessoas façam menos esforços Inspire-se em você mesmo
  • 6. E-commerce pronto? ● Magento ● Joomla + VirtueMart ● WordPress + WP-shopping-cart ● Django + Sathmo ● Loja Locaweb ● OsCommerce ● PretaShop ● ...
  • 8. O ambiente ● Sistema de controle de versão - GIT ● Linguagem forte e madura – PHP ● Banco de dados – MySQL ● Servidor – Apache
  • 9. Controle de versão – existem vários ● Subversion ● Bazaar ● Git ● Mercuial ● CVS
  • 12. Como funciona? FTP Skywalker UPLOAD
  • 14. Como funciona? Corrige BUG online FTP
  • 15. Como funciona? FTP Darth Vader UPLOAD
  • 17. Como funciona? REPOSITÓRIO 1 Skywalker Darth Vader
  • 18. Como funciona? REPOSITÓRIO 1 clone 1 1
  • 19. Como funciona? REPOSITÓRIO 2 push 2 1
  • 20. Como funciona? REPOSITÓRIO 2 push 2 1
  • 21. Como funciona? REPOSITÓRIO 2 2 1
  • 22. Como funciona? REPOSITÓRIO 2 pull 2 2
  • 23. Como funciona? REPOSITÓRIO 3 push 2 3
  • 24. Como funciona? REPOSITÓRIO SERVIDOR clone/pull push
  • 25. Framework – vantagens ● Métodos mágicos que auxiliam no desenvolvimento ● Regras que ajudam a manter a organização dos arquivos – geralmente MVC ● Gama de interfaces para bancos de dados ● Helpers que libertam-te de escrever código ● Scripts que geram boa parte do código ● Gerenciamento de cache – deixando a aplicação mais rápida
  • 26. Framework – desvantagens ● Você precisa aprender uma nova lingua ● O fato dos scripts gerarem boa parte do código interfere em sua criação ● Regras que nem sempre se aplicam a seu negócio ● Criação de demasiados arquivos que nem sempre são necessários
  • 27. Frameworks - exemplos ● Zend Framework ● CodeIgniter ● CakePHP ● Synphony ● Spaghetti* ● VórticePHP
  • 28. Proposta, um microframework ● Público: github ● Organização: MVC – Model, View, Control ● Gerenciamento de URLs
  • 29. O que o framework terá ● Manipular Banco de Dados ● Métodos mágicos definidos por você ● Reaproveitamento de código ● URLs amigáveis ● Segurança ● Fácil de entender ● Simples de fazer manutenção
  • 30. M de MVC – Model Iremos usar PDO (PHP Database Object) como base para o Model ● Suporte para vários bancos de dados ● Nativo desde o PHP5.2 ● Extensível ● Orientado a Objetos ● Fácil de usar
  • 31. M de MVC – Model Vários bancos, apenas um objeto new PDO(‘mysql:dbname=banco;host=localhost’, ‘usuario’, ‘senha’); new PDO(‘sqlite:/opt/database/mydb.sq3’);
  • 32. Helper – pau pra toda obra! function error() { die('Internal Server Error.'); } function url($uri) { return BASE_URL.$uri; } function valor($numero) { return "R$ ".number_format($numero); }
  • 33. Mapeamento de URLs – URLs amigáveis $urls = array( # 'Expressão regular' => “Controller” '^/?$' => 'Inicio', '^/categoria/(d+)/?$' => 'Categoria', '^/produto/(d+)/?$' => 'Produto', );
  • 34. Abracadabra: a mágica! $url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; foreach ($urls as $regexp => $class) { if (preg_match("@$regexp@", $url, $atributos)) { if (class_exists($class)) { array_shift($atributos); $method = $_POST ? 'post' : 'get'; $class = new $class; call_user_func_array(array($class, $method), $atributos); die(); } } } error();
  • 35. Abracadabra: a mágica! $url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; foreach ($urls as $regexp => $class) { if (preg_match("@$regexp@", $url, $atributos)) { if (class_exists($class)) { array_shift($atributos); $method = $_POST ? 'post' : 'get'; $class = new $class; call_user_func_array(array($class, $method), $atributos); die(); } } } error();
  • 36. Abracadabra: a mágica! $url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; foreach ($urls as $regexp => $class) { if (preg_match("@$regexp@", $url, $atributos)) { if (class_exists($class)) { array_shift($atributos); $method = $_POST ? 'post' : 'get'; $class = new $class; call_user_func_array(array($class, $method), $atributos); die(); } } } error();
  • 37. Abracadabra: a mágica! $url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; foreach ($urls as $regexp => $class) { if (preg_match("@$regexp@", $url, $atributos)) { if (class_exists($class)) { array_shift($atributos); $method = $_POST ? 'post' : 'get'; $class = new $class; call_user_func_array(array($class, $method), $atributos); die(); } } } error();
  • 38. Abracadabra: a mágica! $url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; foreach ($urls as $regexp => $class) { if (preg_match("@$regexp@", $url, $atributos)) { if (class_exists($class)) { array_shift($atributos); $method = $_POST ? 'post' : 'get'; $class = new $class; call_user_func_array(array($class, $method), $atributos); die(); } } } error();
  • 39. Abracadabra: a mágica! $url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; foreach ($urls as $regexp => $class) { if (preg_match("@$regexp@", $url, $atributos)) { if (class_exists($class)) { array_shift($atributos); $method = $_POST ? 'post' : 'get'; $class = new $class; call_user_func_array(array($class, $method), $atributos); die(); } } } error();
  • 40. Abracadabra: a mágica! $url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; foreach ($urls as $regexp => $class) { if (preg_match("@$regexp@", $url, $atributos)) { if (class_exists($class)) { array_shift($atributos); $method = $_POST ? 'post' : 'get'; $class = new $class; call_user_func_array(array($class, $method), $atributos); die(); } } } error();
  • 41. Abracadabra: a mágica! $url = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/'; foreach ($urls as $regexp => $class) { if (preg_match("@$regexp@", $url, $atributos)) { if (class_exists($class)) { array_shift($atributos); $method = $_POST ? 'post' : 'get'; $class = new $class; call_user_func_array(array($class, $method), $atributos); die(); } } } error();
  • 42. O resultado! class Inicio { function get($attr1, $attr2, $attr3) { // seu controller } function post() { // opcional } }
  • 43. O resultado! class Inicio { # controller function get($attr1, $attr2, $attr3) { // seu controller } function post() { // opcional } }
  • 44. O resultado! class Inicio { function get($attr1, $attr2, $attr3) { // seu controller } function post() { // opcional } }
  • 45. O resultado! class Inicio { function get($attr1, $attr2, $attr3) { // seu controller } function post() { // opcional } }
  • 46. Template: aproveitando os métodos mágicos
  • 47. Adicionando um produto class Adiciona { public function get($id, $ajax = false) { $con =& get_con(); if (!$con->produto($id)) { error(); } if (isset($_SESSION['carrinho'][$id])) { $_SESSION['carrinho'][$id]++; } else { $_SESSION['carrinho'][$id] = 1; } header('Location: '.url('carrinho')); } }
  • 48. E-commerce pronto?! Para que o e-commerce esteja pronto de fato, falta apenas um detalhe: o comprador deve comprar Vamos por a mão na massa!!!
  • 49. Formas de pagamento Boleto bancário Cartão de crédito Cartões de débito Transação entre contas... ... ou usar o PagSeguro
  • 52. PagSeguro: como funciona? Pague com o PagSeguro
  • 53. PagSeguro: como funciona? Pague com o POST PagSeguro
  • 54. E o tal do retorno? Usuário - POST
  • 55. E o tal do retorno? Usuário - POST Usuário - GET
  • 56. E o tal do retorno? Usuário - POST Usuário - GET Robô POST
  • 57. E o tal do retorno? Usuário - POST Usuário - GET Bad Guy POST? Robô POST
  • 58. E o tal do retorno? Usuário - POST Usuário - GET POST – TOKEN Bad Guy POST? Robô POST VERIFICADO/FALSO
  • 59. Na pática, use a biblioteca A Visie possui uma ótima biblioteca que gera o formulário de forma simples http://visie.com.br/pagseguro/php.php http://github.com/pagseguro
  • 60. #comofas? require_once('pagseguro/pgs.php'); $cod = uniqid(true); $pgs = new Pgs(array( 'email_cobranca' => 'mike@visie.com.br', 'tipo' => 'CP', 'ref_transacao' => $cod, ));
  • 61. #comofas? foreach ($_SESSION['carrinho'] as $id => $qtd) { $produto = $con->produto($id); $pgs->adicionar(array( 'id' => $produto->id, 'descricao' => $produto->nome, 'valor' => $produto->valor, 'quantidade' => $qtd, )); }
  • 62. Melhoria: brincando com JS $pgs->mostra(array( 'open_form' => false, 'show_submit' => false )); document.forms[0].submit();
  • 64. Passo final: Publicando! Com o controle de versão e um servidor bom, tudo fica mais fácil! Faça o clone do projeto no servidor Import do banco de dados Divulgue!