Wisher

269 visualizações

Publicada em

Introdução a componentes refatorados e novos da Zend Framework 2

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
269
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Wisher

  1. 1. Patterns
  2. 2. ZF2 Patterns Ramon Henrique Ornelas Twitter: @ramonornela Github: http://github.com/ramonornela 13 de Novembro de 2011
  3. 3. Namespaces
  4. 4. Namespaces- Cada arquivo de classe declara um namespace;- Um namespace por arquivo;- Qualquer classe que não usa o namespace atual (ou subnamespace) é importado e, normalmente, alias;- Resolução Global é desencorajada, exceto no caso de classes referenciadas em strings. 13 de Novembro de 2011
  5. 5. Autoloading
  6. 6. Problemas- Muitas classes são carregadas sem necessidade;- Faltando require_once em alguns componentes; Exemplo issue http://framework.zend.com/issues/browse/ZF-10291 13 de Novembro de 2011
  7. 7. Melhorias- Retirada as chamadas require_once;- Segue PSR-0; - PSR = PHP Standards Recomendation - Libs que seguem está recomendação: Symfony, Doctrine, Zend Framework, PEAR2/Pyrus, Lithium, Agavi, etc. - Com isto permitirá carregar classes de 1 ou mais bibliotecas diferentes com um único autoloader e um único include path; - SplClassLoader! http://gist.github.com/221634 virá na versão 5.4 o/.- Oferece múltiplas abordagens - ZF1 style; - Por namespace/vendor prefixo (convenção de nomenclatura ZF1) autoloading; - Class Map autoloading; - Module autoloading; - Resource autoloading; 13 de Novembro de 2011
  8. 8. PerformanceClass-Map mostram uma melhora de 25% sobre o autoloader ZF1 sem aceleração. - E melhorias 60-85%, quando estiver no cache opcode.Namespaces / prefixos com caminhos específicos mostra ganhos de 10% sem aceleração. - E 40% quando melhorias de cache opcode. 13 de Novembro de 2011
  9. 9. Plugin loading
  10. 10. Plugins???- Action e view helpers; - Adapters; - Filter e Validators quando usados com Form (também os decoradores) e InputFilter. 13 de Novembro de 2011
  11. 11. Problema- Maneiras distintas para resolver dinamicamente as classes de plugin. - Caminhos relativos à classe chamada; - Caminho caminho-pilhas (mais comum); - Setters para indicar as classes;- Abordagem comum é a pior; - Desempenho ruim; (performance); - Difícil depuração; 13 de Novembro de 2011
  12. 12. Locator Precedência- Mapa definidos no gerenciador de plugin de concreto;- Mapas estáticos (registo mais recente tem precedência);- Mapeamento passados ​na instância;- Mapeamento explícito. 13 de Novembro de 2011
  13. 13. Lazy Loading Plugin Broker- Registra “specs” para o broker (dependência);- Quando esse plugin é solicitado, as opções fornecidas serão usadas a menos que novas opções sejam fornecidas. 13 de Novembro de 2011
  14. 14. Event Manager
  15. 15. Problema- Como introduzir debug/logging na framework?- Como permitir implementação de cache pelos utilizadores?- Como permitir utilizadores introduzir filtros e validações? 13 de Novembro de 2011
  16. 16. Requisitos- Razoavelmente fácil de entender;- Permitir a interrupção da execução- Permitir a priorização de manipuladores;- Capacidade para anexar ao evento muitos componentes de emissão de uma só vez. 13 de Novembro de 2011
  17. 17. Terminologia- Um Event Manager é um objeto que agrega os ouvintes para um ou mais eventos com nome, e que desencadeia eventos;- Um Listener é um retorno que pode reagir a um evento;- Um Event é uma ação. 13 de Novembro de 2011
  18. 18. Casos de uso- Implementação simples do padrão (pattern) observer;- Implementação Orientada a Aspectos;- Implementação de event-driven arquiteturas. 13 de Novembro de 2011
  19. 19. Dependency Injection
  20. 20. Simples Definição- Define maneiras de passar as dependências a um objeto. 13 de Novembro de 2011
  21. 21. Di vs DiC- Di é um pattern;- Dic (Container) é uma ferramenta; 13 de Novembro de 2011
  22. 22. ZendDiDefinitionDefinições é o lugar onde ZendDi tenta compreender a estrutura do código. 13 de Novembro de 2011
  23. 23. OBRIGADO!!!

×