Introdução ao Zend Framework 2

1.578 visualizações

Publicada em

Apresentação sobre as novidades do PHP e do Zend Framework 2

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

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

Nenhuma nota no slide

Introdução ao Zend Framework 2

  1. 1. as novidades do PHP eoZend Framework 2
  2. 2. Elton Minetto Graduado/pós-graduado em Ciência da Computação Desenvolvedor desde 1997 Professor desde 2004 Autor de dois livros sobre PHPSócio da Coderockr Instrutor do Code Squad
  3. 3. PHP
  4. 4. Namespaces
  5. 5. <?phpnamespace CoreService;use ZendHttpClient as HttpClient;use ZendHttpRequest;class Auth{ public function __construct($apiKey, $apiUri, $rpcUri)  {  $this->httpClient = new HttpClient(); }}
  6. 6. Traits
  7. 7. trait Veiculo { public function rodar(){ /* x */ }}trait Aeronave { public function voar(){ /* x */ }}trait Brinquedo { private $pedagogico; public function isPedagogico(){ return $this->pedagogico; }}
  8. 8. class Carrinho { use Veiculo, Brinquedo;}class Aviaozinho { use Aeronave, Brinquedo;}class Helicoptero { use Aeronave;}class TanqueDeGuerra { use Veiculo;}
  9. 9. Servidor embutido
  10. 10. php -S localhost:8080 -t /var/www/projeto
  11. 11. PSR
  12. 12. PSR - 0: regras de autoloader de classes PSR - 1: regras básicas de codificaçãoPSR - 2: regras avançadas de codificação
  13. 13. Composer
  14. 14. Ferramenta que facilita a instalação e atualização de dependências
  15. 15. Funções anônimas
  16. 16. public function getServiceConfig(){ return array( factories => array( Cache => function($sm) { $config = include __DIR__ . config.php; $cache = StorageFactory::factory( array( adapter => $config[cache]) ); return $cache; } ), );}
  17. 17. Frameworks
  18. 18. Uma base de onde pode-se desenvolver algo maior ou mais específico. É uma coleção de códigos, classes, funções,técnicas e metodologias que facilitam o desenvolvimento de novos softwares.
  19. 19. Zend Framework 2
  20. 20. Desenvolvido pela Zend junto com a comunidade PHP Mais de 2 anos de desenvolvimentoMais de 200 profissionais envolvidosApoio Google, Microsoft, entre outras
  21. 21. Vantagens
  22. 22. Usa recursos mais avançados do PHP 5.3.3 em diante
  23. 23. Processo de contribuição mais simples Pull-requests no Github Não precisa assinar termos
  24. 24. Fácil instalação e atualização via Composer
  25. 25. No more magic!Tudo é mais explícito, fácil de manter e testar
  26. 26. //ZF1class IndexController extends Zend_Controller_Action{ public function indexAction() { $this->view->message = “Hello World”; }} Onde foi definido?
  27. 27. //ZF2namespace ApplicationController;use ZendViewModelViewModel;use ZendMvcControllerAbstractActionController;class Index extends AbstractActionController{ public function indexAction() { return new ViewModel( array(message => “Hello World”) );}
  28. 28. Fácil integração com frameworks e componentes compatíveis com o PSR-0 e Composer (Symfony, Doctrine, Monolog, etc)
  29. 29. Desvantagens
  30. 30. Pouca documentação
  31. 31. Módulos
  32. 32. "[] um módulo é uma coleção de códigoe outros arquivos que resolve umproblema específico de uma aplicação ousite." Mattew OPhinney. Zend Framework project leader
  33. 33. Totalmente reutilizáveisDezenas de módulos desenvolvidos no http://modules.zendframework.com
  34. 34. Eventos
  35. 35. Como introduzir logs e debugs no códido da aplicação?Como introduzir cache na aplicação como um todo?Como introduzir validações, filtros, ACL?Soluções: traits (somente PHP 5.4), PubSub pattern, eventos
  36. 36. Um EventManager é um objeto que agrega listeners paraum ou mais eventos e que gera (trigger) outros eventos.Um listener é uma função/método (callback) que reage aum evento
  37. 37. Injeção dedependências
  38. 38. class User{ protected $storage; public function __construct() { $this->storage = new SessionStorage(); }}$user = new User(); Difícil de customizar Fácil de usar
  39. 39. class User{ protected $storage; public function __construct($storage) { $this->storage = $storage; }} Fácil de customizar$storage = new SessionStorage()$user = new User($storage); Mais difícil de usar
  40. 40. //formas de injeção de dependências$storage = new SessionStorage();//injeção pelo construtor$user = new User($storage);//injeção usando setters$user = new User();$user->setStorage($storage);//injeção por propriedade$user = new User();$user->storage = $storage;
  41. 41. ServiceManager
  42. 42. "[] é um registro, ou container que armazenaos vários objetos necessários para a suaaplicação[] armazena a informação necessáriapara instanciar estes objetos conforme foremnecessários [] é um gerenciador de objetos, ougerenciador de instâncias." Evan Coury, software engineer.
  43. 43. /** * Retorna a configuração do service manager do módulo * @return array */public function getServiceConfig(){ return array( factories => array( ApplicationServiceAuth => function($sm) { $dbAdapter = $sm->get(DbAdapter); return new ServiceAuth($dbAdapter); }, ), );}//uso em um controller$auth = $this->getServiceManager()->get(ApplicationServiceAuth);
  44. 44. MVC
  45. 45. Tudo é um eventoControllers são serviços
  46. 46. Referências
  47. 47. http://www.slideshare.net/weierophinney/zend-framework-20-patterns-tutorialhttp://www.slideshare.net/fabpot/dependency-injectionzendcon2010http://diogobesson.com.br/programacao/php-traits/http://code-squad.com/screencast/composerhttp://mwop.net/blog/267-Getting-started-writing-ZF2-modules.htmlhttp://static.zend.com/topics/ZF2-Getting-
  48. 48. Contato
  49. 49. @eminettohttp://www.eltonminetto.net http://coderockr.com http://code-squad.com

×