E-commerce com Zend Framework 2
Nome Marcel Bezerra
Dezembro/2015
2
Conhecendo o palestrante
 Formado em Baicharel em Análise de Sistemas
e Tecnologia da Informação na FATEC
Carapicuiba;
 5 anos de experiência com Programação PHP;
 Analista de Sistemas e Instrutor: 4Linux;
 ZF2 CERTIFIED ARCHITECT;
Marcel Bezerra da Silva
3
Conhecendo a 4Linux
 Metodologia IT Experience - Cenários reais
 Cursos práticos, rápidos e baratos de
autores feras: www.4shot.com.br
 Projetos complexos de missão crítica,
com infra e desenvolvimento PHP
4
Alguns dos nossos clientes
A 4Linux suporta o ecossistema de software livre da
Caixa. Um dos maiores cases do mundo.
Clientes que confiam na qualidade dos serviços da 4Linux.
5
4Linux também é PHP
6
Cursos práticos, rápidos e baratos de
autores “feras”
www.4shot.com.br
7
8
E-commerce com Zend Framework 2
E-commerce
Tags: segurança, internacionalização, layout, desempenho, CRUD.
9
E-commerce com Zend Framework 2
Consumidores, produtos, carrinho de compras, pagamento
10
E-commerce com Zend Framework 2
Prototipação
11
E-commerce com Zend Framework 2
Componentes
12
Agenda – E-commerce com Zend Framework 2
Apresentação
Autenticação
Gerenciamento de produtos
Carrinho de compras
Integração com provedores de pagamento
Conclusão
Perguntas
13
E-commerce com Zend Framework 2
Autenticação
14
E-commerce com Zend Framework 2
Autenticação
15
E-commerce com Zend Framework 2
– bind()
- setData()
- isValid()
- getData()
- setHydrator(ZendHydratorHydratorInterface)
- setInputFilter(ZendInputFilterInputFilterInterface)
ZendZendForm
16
E-commerce com Zend Framework 2
- setData()
- isValid()
- getValues()
- add(ZendInputFilterInputInterface)
ZendInputFilterInputFilter
17
E-commerce com Zend Framework 2
- setFilterChain(ZendFilterFilterChain)
- setValidatorChain(ZendValidatorValidatorChain)
ZendInputFilterInputInterface
18
E-commerce com Zend Framework 2
- getFilters()
- attach(ZendFilterFilterInterface)
ZendFilterFilterChain
19
E-commerce com Zend Framework 2
- filter($value)
ZendFilterFilterInterface
20
E-commerce com Zend Framework 2
- getValidators()
- attach(ZendValidatorValidatorInterface)
ZendValidatorValidatorChain
21
E-commerce com Zend Framework 2
- isValid($value)
- getMessages()
ZendValidatorValidatorInterface
22
E-commerce com Zend Framework 2
Autenticação
23
E-commerce com Zend Framework 2
- setIdentify()
- setCredential()
- authenticate()
ZendAuthenticationAdapterDbTable
24
E-commerce com Zend Framework 2
Autenticação
25
E-commerce com Zend Framework 2
- getStorage()
- hasIdentity()
- getIdentity()
ZendAuthenticationAuthenticationService
26
E-commerce com Zend Framework 2
- isEmpty()
- read()
- write()
- clear()
ZendAuthenticationStorageStorageInterface
27
E-commerce com Zend Framework 2
Autenticação
Http User Agent:
1use ZendSessionValidatorHttpUserAgent;
2use ZendSessionSessionManager;
3$manager = new SessionManager();
4$manager­>getValidatorChain()­>attach(
5 'session.validate',
6 array(new HttpUserAgent(), 'isValid'));
28
E-commerce com Zend Framework 2
Autenticação
Remote Addr:
1use ZendSessionValidatorRemoteAddr;
2use ZendSessionSessionManager;
3$manager = new SessionManager();
4$manager­>getValidatorChain()­>attach(
5 'session.validate',
6 array(new RemoteAddr(), 'isValid'));
29
E-commerce com Zend Framework 2
Autenticação
Link: https://github.com/mabez/bird-skeleton/
30
E-commerce com Zend Framework 2
Gerenciamento de produtos
31
E-commerce com Zend Framework 2
Gerenciamento de produtos
Utilize a helper currencyFormat para formatar o número na moeda desejada:
1{{currencyFormat(produto.preco,  'BRL',  null, 
'pt_BR')}}
32
E-commerce com Zend Framework 2
Gerenciamento de produtos
33
E-commerce com Zend Framework 2
- StringTrim
- StripTags
- RenameUpload
Filtros
Dica: Esses filtros ajudam a prever ataque XSS.
34
E-commerce com Zend Framework 2
- target
- randomize
- overwrite
ZendFilterRenameUpload
35
E-commerce com Zend Framework 2
- ZendValidatorNotEmpty
- messages
- type
Validadores
36
E-commerce com Zend Framework 2
Gerenciamento de produtos
37
E-commerce com Zend Framework 2
- table
- ZendDbAdapterAdapterInterface
- $serviceLocator→get('config')['db']
- ZendDbResultSetResultSetInterface
- ZendDbResultSetHydratingResultSet
ZendDbTableGatewayTableGateway
38
E-commerce com Zend Framework 2
- insert()
- delete()
- update()
- select()
ZendDbTableGatewayTableGateway
Dica: Utilize os recursos de limite e paginação do componente DB do Zf2
para melhor performance.
39
E-commerce com Zend Framework 2
Gerenciamento de produtos
Link: https://github.com/mabez/bird-skeleton/
40
E-commerce com Zend Framework 2
Carrinho de compras
41
E-commerce com Zend Framework 2
Carrinho de compras
42
E-commerce com Zend Framework 2
- name
- manager
- getManager()
ZendSessionContainer
43
E-commerce com Zend Framework 2
- sessionExists()
- start()
- destroy()
- writeClose()
ZendSessionSessionManager
44
E-commerce com Zend Framework 2
Integração com provedor de pagamento
45
E-commerce com Zend Framework 2
Integração com provedor de pagamento
46
E-commerce com Zend Framework 2
ZendHttpClientAdapterCurl
Requisição simples:
1$uri  =  new 
ZendZendUri('https://api.pagamento');
2$curl­>write('POST', $uri), '1.1', array('Content­
Type'  =>  'application/x­www­form­urlencoded; 
charset=utf­8'), 
'USER=usuarioapi&senha=senhaapi&');
47
E-commerce com Zend Framework 2
ZendMvcControllerPluginRedirect
Redirecionamento:
1$controller  =  new  Controller();//essa  deve 
estender  de 
ZendMvcControllerAbstractActionController
2$controller redirect() toUrl('https://pagamento.co→ →
m.br');
48
E-commerce com Zend Framework 2
Conclusão
Cache Storage:
1use ZendCacheStorageFactory;
2$cache = StorageFactory::factory( array(
3 'adapter' => 'memcached',
4 'plugins' => 'serializer'
5));
49
E-commerce com Zend Framework 2
Conclusão
Template Maps:
1return array('template_map' => array(
2 'produto/produto' => __DIR__ .
3 '/../view/produto/index/produto.twig',
4 'produto/lista' => __DIR__ .
5 '/../view/produto/index/lista.twig'
6));
50
E-commerce com Zend Framework 2
Conclusão
Config Caching:
1return array(
2 'module_listener_options' => array(
3 'config_cache_enabled' => true,
4 'module_map_cache_enabled' => true,
5 'cache_dir' => 'data/cache/'
6));
51
E-commerce com Zend Framework 2
Conclusão
ClassMapAutoloader:
1php classmap_generator.php modules
52
E-commerce com Zend Framework 2
Conclusão
Twig:
1return array(
2 'modules' => array(
3 'ZfcTwig',
4 ),
5 'view_manager' => array(
6 'strategies'  => 
array('ZfcTwigViewStrategy')));
53
E-commerce com Zend Framework 2
Conclusão
Link: https://github.com/mabez/bird-skeleton/
54
Conclusão – E-commerce com Zend Framework
2
Faça protótipos
Procure conhecer os recursos do ZF2 para identificar o
que pode atender suas necessidades.
Crie módulos mais desacoplados possível.
55
Visite o stand da 4Linux
56
Perguntas
57
Marcel Bezerra
marcel.bezerra@4linux.com.br
www.4linux.com.br
www.4shot.com.br
Sigam-nos
@4linux
@4shotcursos

E-commerce com Zend Framework 2

  • 1.
    E-commerce com ZendFramework 2 Nome Marcel Bezerra Dezembro/2015
  • 2.
    2 Conhecendo o palestrante Formado em Baicharel em Análise de Sistemas e Tecnologia da Informação na FATEC Carapicuiba;  5 anos de experiência com Programação PHP;  Analista de Sistemas e Instrutor: 4Linux;  ZF2 CERTIFIED ARCHITECT; Marcel Bezerra da Silva
  • 3.
    3 Conhecendo a 4Linux Metodologia IT Experience - Cenários reais  Cursos práticos, rápidos e baratos de autores feras: www.4shot.com.br  Projetos complexos de missão crítica, com infra e desenvolvimento PHP
  • 4.
    4 Alguns dos nossosclientes A 4Linux suporta o ecossistema de software livre da Caixa. Um dos maiores cases do mundo. Clientes que confiam na qualidade dos serviços da 4Linux.
  • 5.
  • 6.
    6 Cursos práticos, rápidose baratos de autores “feras” www.4shot.com.br
  • 7.
  • 8.
    8 E-commerce com ZendFramework 2 E-commerce Tags: segurança, internacionalização, layout, desempenho, CRUD.
  • 9.
    9 E-commerce com ZendFramework 2 Consumidores, produtos, carrinho de compras, pagamento
  • 10.
    10 E-commerce com ZendFramework 2 Prototipação
  • 11.
    11 E-commerce com ZendFramework 2 Componentes
  • 12.
    12 Agenda – E-commercecom Zend Framework 2 Apresentação Autenticação Gerenciamento de produtos Carrinho de compras Integração com provedores de pagamento Conclusão Perguntas
  • 13.
    13 E-commerce com ZendFramework 2 Autenticação
  • 14.
    14 E-commerce com ZendFramework 2 Autenticação
  • 15.
    15 E-commerce com ZendFramework 2 – bind() - setData() - isValid() - getData() - setHydrator(ZendHydratorHydratorInterface) - setInputFilter(ZendInputFilterInputFilterInterface) ZendZendForm
  • 16.
    16 E-commerce com ZendFramework 2 - setData() - isValid() - getValues() - add(ZendInputFilterInputInterface) ZendInputFilterInputFilter
  • 17.
    17 E-commerce com ZendFramework 2 - setFilterChain(ZendFilterFilterChain) - setValidatorChain(ZendValidatorValidatorChain) ZendInputFilterInputInterface
  • 18.
    18 E-commerce com ZendFramework 2 - getFilters() - attach(ZendFilterFilterInterface) ZendFilterFilterChain
  • 19.
    19 E-commerce com ZendFramework 2 - filter($value) ZendFilterFilterInterface
  • 20.
    20 E-commerce com ZendFramework 2 - getValidators() - attach(ZendValidatorValidatorInterface) ZendValidatorValidatorChain
  • 21.
    21 E-commerce com ZendFramework 2 - isValid($value) - getMessages() ZendValidatorValidatorInterface
  • 22.
    22 E-commerce com ZendFramework 2 Autenticação
  • 23.
    23 E-commerce com ZendFramework 2 - setIdentify() - setCredential() - authenticate() ZendAuthenticationAdapterDbTable
  • 24.
    24 E-commerce com ZendFramework 2 Autenticação
  • 25.
    25 E-commerce com ZendFramework 2 - getStorage() - hasIdentity() - getIdentity() ZendAuthenticationAuthenticationService
  • 26.
    26 E-commerce com ZendFramework 2 - isEmpty() - read() - write() - clear() ZendAuthenticationStorageStorageInterface
  • 27.
    27 E-commerce com ZendFramework 2 Autenticação Http User Agent: 1use ZendSessionValidatorHttpUserAgent; 2use ZendSessionSessionManager; 3$manager = new SessionManager(); 4$manager­>getValidatorChain()­>attach( 5 'session.validate', 6 array(new HttpUserAgent(), 'isValid'));
  • 28.
    28 E-commerce com ZendFramework 2 Autenticação Remote Addr: 1use ZendSessionValidatorRemoteAddr; 2use ZendSessionSessionManager; 3$manager = new SessionManager(); 4$manager­>getValidatorChain()­>attach( 5 'session.validate', 6 array(new RemoteAddr(), 'isValid'));
  • 29.
    29 E-commerce com ZendFramework 2 Autenticação Link: https://github.com/mabez/bird-skeleton/
  • 30.
    30 E-commerce com ZendFramework 2 Gerenciamento de produtos
  • 31.
    31 E-commerce com ZendFramework 2 Gerenciamento de produtos Utilize a helper currencyFormat para formatar o número na moeda desejada: 1{{currencyFormat(produto.preco,  'BRL',  null,  'pt_BR')}}
  • 32.
    32 E-commerce com ZendFramework 2 Gerenciamento de produtos
  • 33.
    33 E-commerce com ZendFramework 2 - StringTrim - StripTags - RenameUpload Filtros Dica: Esses filtros ajudam a prever ataque XSS.
  • 34.
    34 E-commerce com ZendFramework 2 - target - randomize - overwrite ZendFilterRenameUpload
  • 35.
    35 E-commerce com ZendFramework 2 - ZendValidatorNotEmpty - messages - type Validadores
  • 36.
    36 E-commerce com ZendFramework 2 Gerenciamento de produtos
  • 37.
    37 E-commerce com ZendFramework 2 - table - ZendDbAdapterAdapterInterface - $serviceLocator→get('config')['db'] - ZendDbResultSetResultSetInterface - ZendDbResultSetHydratingResultSet ZendDbTableGatewayTableGateway
  • 38.
    38 E-commerce com ZendFramework 2 - insert() - delete() - update() - select() ZendDbTableGatewayTableGateway Dica: Utilize os recursos de limite e paginação do componente DB do Zf2 para melhor performance.
  • 39.
    39 E-commerce com ZendFramework 2 Gerenciamento de produtos Link: https://github.com/mabez/bird-skeleton/
  • 40.
    40 E-commerce com ZendFramework 2 Carrinho de compras
  • 41.
    41 E-commerce com ZendFramework 2 Carrinho de compras
  • 42.
    42 E-commerce com ZendFramework 2 - name - manager - getManager() ZendSessionContainer
  • 43.
    43 E-commerce com ZendFramework 2 - sessionExists() - start() - destroy() - writeClose() ZendSessionSessionManager
  • 44.
    44 E-commerce com ZendFramework 2 Integração com provedor de pagamento
  • 45.
    45 E-commerce com ZendFramework 2 Integração com provedor de pagamento
  • 46.
    46 E-commerce com ZendFramework 2 ZendHttpClientAdapterCurl Requisição simples: 1$uri  =  new  ZendZendUri('https://api.pagamento'); 2$curl­>write('POST', $uri), '1.1', array('Content­ Type'  =>  'application/x­www­form­urlencoded;  charset=utf­8'),  'USER=usuarioapi&senha=senhaapi&');
  • 47.
    47 E-commerce com ZendFramework 2 ZendMvcControllerPluginRedirect Redirecionamento: 1$controller  =  new  Controller();//essa  deve  estender  de  ZendMvcControllerAbstractActionController 2$controller redirect() toUrl('https://pagamento.co→ → m.br');
  • 48.
    48 E-commerce com ZendFramework 2 Conclusão Cache Storage: 1use ZendCacheStorageFactory; 2$cache = StorageFactory::factory( array( 3 'adapter' => 'memcached', 4 'plugins' => 'serializer' 5));
  • 49.
    49 E-commerce com ZendFramework 2 Conclusão Template Maps: 1return array('template_map' => array( 2 'produto/produto' => __DIR__ . 3 '/../view/produto/index/produto.twig', 4 'produto/lista' => __DIR__ . 5 '/../view/produto/index/lista.twig' 6));
  • 50.
    50 E-commerce com ZendFramework 2 Conclusão Config Caching: 1return array( 2 'module_listener_options' => array( 3 'config_cache_enabled' => true, 4 'module_map_cache_enabled' => true, 5 'cache_dir' => 'data/cache/' 6));
  • 51.
    51 E-commerce com ZendFramework 2 Conclusão ClassMapAutoloader: 1php classmap_generator.php modules
  • 52.
    52 E-commerce com ZendFramework 2 Conclusão Twig: 1return array( 2 'modules' => array( 3 'ZfcTwig', 4 ), 5 'view_manager' => array( 6 'strategies'  =>  array('ZfcTwigViewStrategy')));
  • 53.
    53 E-commerce com ZendFramework 2 Conclusão Link: https://github.com/mabez/bird-skeleton/
  • 54.
    54 Conclusão – E-commercecom Zend Framework 2 Faça protótipos Procure conhecer os recursos do ZF2 para identificar o que pode atender suas necessidades. Crie módulos mais desacoplados possível.
  • 55.
  • 56.
  • 57.