Your SlideShare is downloading. ×
0
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Zend Framework 2 - O que esperar da nova versão
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Zend Framework 2 - O que esperar da nova versão

2,792

Published on

O Objetivo desta palestra é discutir um pouco da história do Zend Framework e sua caminhada até o presente momento, e seus caminhos que estão impulsionando a reescrita da Versão 2.0, os velhos e os …

O Objetivo desta palestra é discutir um pouco da história do Zend Framework e sua caminhada até o presente momento, e seus caminhos que estão impulsionando a reescrita da Versão 2.0, os velhos e os novos paradgmas e os desafios que a nova versão vem colocando à tona frente aos paradgmas do desenvolvimento web.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,792
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
33
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Zend Framework repaginado, o que esperar da nova versão Domingos Teruelquarta-feira, 29 de agosto de 12 1
  • 2. O Palestrantequarta-feira, 29 de agosto de 12 2
  • 3. Agenda • Um pouco de história • O Futuro • Novos padrões e velhos padrões • Novos componentes • Outras coisasquarta-feira, 29 de agosto de 12 3
  • 4. Um pouco de história • Verão de 2005 • Inicio da codificação do Zend Framework com um seleto grupo de parceiros • Outono de 2005 • Durante a conferência anual ZendCon é anunciado o processo de Comunidade PHP, que entre outras coisas envolveu a Fundação Eclipse, o relançamento da Zend Developers Zone, e o Zend Frameworkquarta-feira, 29 de agosto de 12 4
  • 5. Um pouco de história • Julho de 2007 • Liberada a primeira versão estável do Zend Framework (1.0.0) • Incluindo uma implementação basica do Padrão MVC, com plugins, action helpers, renderização automatica, entre outros • Várias APIs de consumo de Webservices, camadas de autenticação e autorização, Table, Row, Data Gateways, etc • Componente servidor para XML-RPC e RESTquarta-feira, 29 de agosto de 12 5
  • 6. Um pouco de história • Março de 2008 • Liberada a versão 1.5.0 • Zend_Form e Zend_Layout foram os carros chefes • Muitas melhorias no Zend_View (Agora com entendimento do layout)quarta-feira, 29 de agosto de 12 6
  • 7. Um pouco de história • Setembro de 2008 • Zend Framework 1.6.0 • Integração com o Dojo Toolkit • Zend_Test, implementação ou extensão do PHPUnit • Novos Actions Helper e a introdução do ContextSwitchquarta-feira, 29 de agosto de 12 7
  • 8. Um pouco de história • Novembro de 2008 • Versão 1.7.0 • Melhorias de perfomance • Atenção especial ao AMF (Adobe Action Message) • Grande interação com o protocolo da Adobe (Action Script do Flash e mais tarde Adobe Air)quarta-feira, 29 de agosto de 12 8
  • 9. Um pouco de história • Abril de 2009 • Released 1.8.0 • Zend_Tool e Zend_Aplication • Full Stackquarta-feira, 29 de agosto de 12 9
  • 10. Um pouco de história • 1.9.0 em Julho de 2009 • Reescrita do Zend_Feed_Reader • PHP 5.3 Compatible • Adições da Comunidadequarta-feira, 29 de agosto de 12 10
  • 11. Um pouco de história • Em Outubro de 2009 foi iniciada uma verdadeira caça a bugs incentivada pela comunidadequarta-feira, 29 de agosto de 12 11
  • 12. Um pouco de história • Janeiro de 2010 • Chega a versão 1.10 • Novos componentes de testes • ZendTestCase com Zend_Application • Virada na Documentação, além da reorganização, adoção do PhD para redenrizar o manual, quickstart no sistema de comentários. • Learning Zend Framework Sectionquarta-feira, 29 de agosto de 12 12
  • 13. Um pouco de história • Fevereiro de 2010 marcou o inicío do desenvolvimento em cima do Zend Framework 2.0 • Junho de 2010 Formação do Time de Revisão da Comunidadequarta-feira, 29 de agosto de 12 13
  • 14. Um pouco de história • Novembro de 2010 • Novo release, 1.11 • Zend_Http_UserAgent • Zend_Cloud • API SimpleCloudquarta-feira, 29 de agosto de 12 14
  • 15. Futuro?quarta-feira, 29 de agosto de 12 15
  • 16. Daqui vamos para onde?quarta-feira, 29 de agosto de 12 16
  • 17. Revoluçãoquarta-feira, 29 de agosto de 12 17
  • 18. Evoluçãoquarta-feira, 29 de agosto de 12 18
  • 19. “A mutação é a chave para a nossa evolução. Ela nos permitiu evoluir de organismo unicelular à espécia dominante do planeta. Este processo foi e é lento, milhares de anos podem se passar. Mas em algumas centenas de milênios, a evolução dá um salto”quarta-feira, 29 de agosto de 12 19
  • 20. Melhorias incrementaisquarta-feira, 29 de agosto de 12 20
  • 21. Focar na melhoria da consistência e perfomancequarta-feira, 29 de agosto de 12 21
  • 22. Passos de bebêquarta-feira, 29 de agosto de 12 22
  • 23. • Autoload (extipar chamadas require_once) • Conversão para namespaces • Refatoração e padronização do uso de exceptions • Refatoração e implementação consistente de uma estratégia de carregamento de plugins • Refatorar para uso dos paradigmas especificos do PHP 5.3/5.4 onde se fizer necesárioquarta-feira, 29 de agosto de 12 23
  • 24. Reescrever somente onde faz sentidoquarta-feira, 29 de agosto de 12 24
  • 25. Zend_Db • Dificuldade em obter conexões persistentes e compartilhá-la com outras instâncias ou de diferentes classes • Dificuldades em obter os metadados de forma consistente • Dificuldades em extender • Complexidade em adicionar tarefas pre|posquarta-feira, 29 de agosto de 12 25
  • 26. Zend_Session • Padrão caixa-preta != testável • Armazenamento do Namespace incompatível com $_SESSION • Grandes incompatibilidades com ext/ sessionquarta-feira, 29 de agosto de 12 26
  • 27. <?php use ZendSessionSessionManager, ZendSessionSessionContainer as SessionContainer; $manager = new SessionManager(array( class => MinhaImplementacaoSessionConfiguration, storage => MinhaImplementacaoSessionStorage )); $container = new SessionContainer(SessionIndex, $manager); $container[meuindice] = meu conteudo; $container->setExpirationHops(20);quarta-feira, 29 de agosto de 12 27
  • 28. Filtros e Validadores • Acessos estáticos e uso em cadeias estão mixados no mesmo objeto • Não utilizar a metodologia comum de carregamento de plugin • Padrões required em Filter_Input e Form não são mais suportadosquarta-feira, 29 de agosto de 12 28
  • 29. <?php namespace ZendValidator; if(StaticValidator::execute($value,int)) { //Validação Passou } $chain = new ValidatorChain(); $chain->addValidator(new Int(),true) ->addValidator(new GreaterThan(5)); if($chain->isValid($value)) { //Validação Passou novamente }quarta-feira, 29 de agosto de 12 29
  • 30. Adição de novas funcionalidades que favoreçam a extensibilidadequarta-feira, 29 de agosto de 12 30
  • 31. Exemplos • SignalSlot • FilterChain • SPL Extension (SplStack, SplQueue) • PluginBrokerquarta-feira, 29 de agosto de 12 31
  • 32. Explicitação de códigoquarta-feira, 29 de agosto de 12 32
  • 33. Magia por muitas vezes pode ser muito inigmáticaquarta-feira, 29 de agosto de 12 33
  • 34. echo $this->headLink()->appendStylesheet(meuarquivo.css); /** * Hits Zend_View::_call() * Calls Zend_View::getHelper() * Calls Zend_View::getPlugin() * Calls Zend_Loader_PluginLoader::load() * Calls Zend_Loader::isReadable() * Calls call_user_function(hits autoloader..) * which calls Zend_Loader::loadClass * ... */quarta-feira, 29 de agosto de 12 34
  • 35. Mágica? Bruxaria?quarta-feira, 29 de agosto de 12 35
  • 36. class MeuController extends Zend_Controller_Action { public function meuObjetoAction() { $this->view->meuobjeto = uma string qualquer; } } Quando Onde isso está Quando entra os layouts? definido? renderizar?quarta-feira, 29 de agosto de 12 36
  • 37. • Código explícito • Melhora o entendimento • É mais fácil • Facilita a análise • Facilita sua manutençãoquarta-feira, 29 de agosto de 12 37
  • 38. Otimização para perfomancequarta-feira, 29 de agosto de 12 38
  • 39. Requisições/Segundo 0 150 300 450 600 1.0.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 1.10.0quarta-feira, 29 de agosto de 12 39
  • 40. Namespacesquarta-feira, 29 de agosto de 12 40
  • 41. Namespaces • Nomes de classes relativamente grandes • Zend_Form_Element_HtmlArea_Interfacequarta-feira, 29 de agosto de 12 41
  • 42. Namespace • Um namespace declara um arquivo de classe • Um namespace por arquivo • Qualquer classe usada que não estiver no namespace atual (ou em um subnamespace) é importado e tipicamente apelidada • Resolução global totalmente desencorajada, exceto nos casos de classes referenciadas em stringsquarta-feira, 29 de agosto de 12 42
  • 43. Importe classes com o comando use em vez de fazer chamadas a require_once em seu códigoquarta-feira, 29 de agosto de 12 43
  • 44. Exceçõesquarta-feira, 29 de agosto de 12 44
  • 45. Antigamente • Exceções derivavam de uma classe • Não tinha capacidade de extender os tipos de exceções semânticas oferecidas pela SPL • Estratégias de captura limitada • Forte depêndencia entre classes e o todoquarta-feira, 29 de agosto de 12 45
  • 46. Nova abordagem • Eliminação da Zend_Exception • Interface Exception marcada por componente • Exceções concretas residem em um subnamespace Exception estendendo da SPL Exceptionquarta-feira, 29 de agosto de 12 46
  • 47. namespace ZendEventManagerException; use ZendEventManagerException; class InvalidaArgumentException extends InvalidArgumentException implements Exception { }quarta-feira, 29 de agosto de 12 47
  • 48. namespace ZendEventManagerException; use ZendEventManagerException; try { $events->trigger(gera-exception,$objeto); }catch (InvalidArgumentException $e) { }catch (Exception $e) { }catch (InvalidArgumentException $e) { }catch (Exception $e) { }quarta-feira, 29 de agosto de 12 48
  • 49. Autocarregamentoquarta-feira, 29 de agosto de 12 49
  • 50. Autocarregamento: Problemas • Problemas de perfomance • A maioria das classes são utilizadas somente no momento adequado e não devem ser carregadas até que seja necessário • A falta de chamadas require_once leva a errosquarta-feira, 29 de agosto de 12 50
  • 51. Autocarregamento: nova abordagem • Fim dos require_once • Múltipla abordagem de autocarregamento • via include_path (ZF 1) • Namespace / prefixo do fornecedor • Mapa de Classes (Novo)quarta-feira, 29 de agosto de 12 51
  • 52. return array( Index/MeuController => __DIR__ . indexcontrollersMeuController.php . IndexModelObjeto => __DIR__ . indexmodelsObjeto.php);//Mapa de Classesrequire_once Zend/Loader/ClassMapAutoloader.php;$loader = new ZendLoaderClassMapAutoloader ( ./.classmap.php);$loader->register();$objeto = new IndexModelObjeto();quarta-feira, 29 de agosto de 12 52
  • 53. Carregamento de Pluginsquarta-feira, 29 de agosto de 12 53
  • 54. Carregamento de plugin: definição • Plugin é qualquer classe que é determinada em tempo de execução • Auxiliares de controle de visão • Adaptadores • Filtros e Validadoresquarta-feira, 29 de agosto de 12 54
  • 55. Carregamento de plugins: Problema • Várias abordagens para descobrir as classes plugin • Caminhos relativos para as classes chamadas • Pilhas do tipo prefixo-caminho (comum) • Modificadores para indicar classes • O jeito tradicional é uma m%$â • Péssimo para a perfomance • Depuração complicada • Problemas de caching de plugins descobertosquarta-feira, 29 de agosto de 12 55
  • 56. Carregamento de plugins: Soluções • Interface de localização de Plugins • Permite variar a implementação de pesquisa de plugins • Interface de agente de plugins • Compõe um Localizador de Pluginsquarta-feira, 29 de agosto de 12 56
  • 57. namespace MeuComponenteuse ZendLoaderPluginClassLoader, ZendLoaderPluginBroker;class ComponentLoader extends PluginClassLoader{ protected $plugins = arry( soo => MeuComponenteBla, soo_bla => MeuComponenteSooBla );}quarta-feira, 29 de agosto de 12 57
  • 58. Novos Componentesquarta-feira, 29 de agosto de 12 58
  • 59. ZendEventManagerquarta-feira, 29 de agosto de 12 59
  • 60. • Como introduzir debug/logging na aplicação? • Como permitir implementação de caches pelos utilizadores? • Como permitir utilizadores introduzam filtros e validação?quarta-feira, 29 de agosto de 12 60
  • 61. EventManager: Premissas • Razoavelmente simples de entender • Permitir a interrupção da execução • Capacidade de anexar ao evento muitos componentes de emissão de uma só vezquarta-feira, 29 de agosto de 12 61
  • 62. EventManager: Definição • Um Event Manager é um objeto que agrega os ouvintes com nome, e que desencadeia eventos; • Um Listener é um retorno que pode reagir a um Evento • Um Evento é uma açãoquarta-feira, 29 de agosto de 12 62
  • 63. EventManager: Casos de uso • Implementação simples do padrão (pattern) observer; • Implementação Orientada a Aspectos; • Implementação de event-driven arquiteturasquarta-feira, 29 de agosto de 12 63
  • 64. Dependency Injection (DI)quarta-feira, 29 de agosto de 12 64
  • 65. DI - Simples definição • Define maneiras de passar as dependências a um objetoquarta-feira, 29 de agosto de 12 65
  • 66. DI vs DIC • Di é um pattern; • Dic (Container) é uma ferramentaquarta-feira, 29 de agosto de 12 66
  • 67. • ZendDiDefinition • Definições é o lugar onde ZendDi tenta compreender a estrutura do código.quarta-feira, 29 de agosto de 12 67
  • 68. ZendDi: Caso de uso • Tirar os controladores MVC do containerquarta-feira, 29 de agosto de 12 68
  • 69. namespace IndexController; Class Entry implements Dispatchable { public function setResource(Resource $resource) { $this->resource = $resource; } public function dispatch(Request $request, Response $response = null) { $entry = $this->resource->get($id) } }quarta-feira, 29 de agosto de 12 69
  • 70. class FrontController implements Dispatchable { public function __construct(DependencyInjection $di) { $this->id = $id; } public function dispatch(Request $request, Response = null) { /*...*/ $controller = $this->di->get($controllerName); /**..**/ } }quarta-feira, 29 de agosto de 12 70
  • 71. • Perfomance • Desacoplamento de código • Simplificação do código do controladorquarta-feira, 29 de agosto de 12 71
  • 72. Outras coisas • Refatoração e reescrita do MVC • Internacionalização e Localização • Testing • Documentação • Empacotamento • Ferramentas de migraçãoquarta-feira, 29 de agosto de 12 72
  • 73. ZF II Git • Guia do git • http://bit.ly/zf2gitguide • GitHub • http://github.com/zendframework/zf2 • CLA ainda necessário quarta-feira, 29 de agosto de 12 73
  • 74. quarta-feira, 29 de agosto de 12 74
  • 75. PHPSC Conf 2012 Sábado, 27 de outubro de 2012 http://conf.phpsc.com.brquarta-feira, 29 de agosto de 12 75
  • 76. Obrigado! http://about.me/mingomax http://slideshare.net/mingomaxquarta-feira, 29 de agosto de 12 76

×