Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao Zend Framework 2

0227f6274b8a6cce078d7f8a91460c41?s=47 Elton Minetto
October 25, 2012

Introdução ao Zend Framework 2

São apresentadas as principais novidades das últimas versões do PHP e como elas são usadas no Zend Framework 2. Também são apresentadas as vantagens e detalhes do novo framework da Zend.

0227f6274b8a6cce078d7f8a91460c41?s=128

Elton Minetto

October 25, 2012
Tweet

Transcript

  1. as novidades do PHP e o Zend Framework 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 PHP Sócio da Coderockr Instrutor do Code Squad
  3. PHP

  4. Namespaces

  5. <?php namespace Core\Service; use Zend\Http\Client as HttpClient; use Zend\Http\Request; class

    Auth { public function __construct($apiKey, $apiUri, $rpcUri) { $this->httpClient = new HttpClient(); } }
  6. Traits

  7. trait Veiculo { public function rodar(){ /* x */ }

    } trait Aeronave { public function voar(){ /* x */ } } trait Brinquedo { private $pedagogico; public function isPedagogico(){ return $this->pedagogico; } }
  8. class Carrinho { use Veiculo, Brinquedo; } class Aviaozinho {

    use Aeronave, Brinquedo; } class Helicoptero { use Aeronave; } class TanqueDeGuerra { use Veiculo; }
  9. Servidor embutido

  10. php -S localhost:8080 -t /var/www/projeto

  11. PSR

  12. PSR - 0: regras de autoloader de classes PSR -

    1: regras básicas de codificação PSR - 2: regras avançadas de codificação
  13. Composer

  14. Ferramenta que facilita a instalação e atualização de dependências

  15. Funções anônimas

  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. Frameworks

  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. Zend Framework 2

  20. Desenvolvido pela Zend junto com a comunidade PHP Mais de

    2 anos de desenvolvimento Mais de 200 profissionais envolvidos Apoio Google, Microsoft, entre outras
  21. Vantagens

  22. Usa recursos mais avançados do PHP 5.3.3 em diante

  23. Processo de contribuição mais simples Pull-requests no Github Não precisa

    assinar termos
  24. Fácil instalação e atualização via Composer

  25. No more magic! Tudo é mais explícito, fácil de manter

    e testar
  26. //ZF1 class IndexController extends Zend_Controller_Action { public function indexAction() {

    $this->view->message = “Hello World”; } } Onde foi definido?
  27. //ZF2 namespace Application\Controller; use Zend\View\Model\ViewModel; use Zend\Mvc\Controller\AbstractActionController; class Index extends

    AbstractActionController { public function indexAction() { return new ViewModel( array('message' => “Hello World”) ); }
  28. Fácil integração com frameworks e componentes compatíveis com o PSR-0

    e Composer (Symfony, Doctrine, Monolog, etc)
  29. Desvantagens

  30. Pouca documentação

  31. Módulos

  32. "[] um módulo é uma coleção de código e outros

    arquivos que resolve um problema específico de uma aplicação ou site." Mattew O'Phinney. Zend Framework project leader
  33. Totalmente reutilizáveis Dezenas de módulos desenvolvidos no http://modules.zendframework.com

  34. Eventos

  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. Um EventManager é um objeto que agrega listeners para um

    ou mais eventos e que gera (trigger) outros eventos. Um listener é uma função/método (callback) que reage a um evento
  37. Injeção de dependências

  38. class User { protected $storage; public function __construct() { $this->storage

    = new SessionStorage(); } } $user = new User(); Fácil de usar Difícil de customizar
  39. class User { protected $storage; public function __construct($storage) { $this->storage

    = $storage; } } $storage = new SessionStorage() $user = new User($storage); Fácil de customizar Mais difícil de usar
  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. ServiceManager

  42. "[] é um registro, ou container que armazena os vários

    objetos necessários para a sua aplicação[] armazena a informação necessária para instanciar estes objetos conforme forem necessários [] é um gerenciador de objetos, ou gerenciador de instâncias." Evan Coury, software engineer.
  43. /** * Retorna a configuração do service manager do módulo

    * @return array */ public function getServiceConfig() { return array( 'factories' => array( 'Application\Service\Auth' => function($sm) { $dbAdapter = $sm->get('DbAdapter'); return new Service\Auth($dbAdapter); }, ), ); } //uso em um controller $auth = $this->getServiceManager()->get('Application \Service\Auth');
  44. MVC

  45. Tudo é um evento Controllers são serviços

  46. Referências

  47. http://www.slideshare.net/weierophinney/zend- framework-20-patterns-tutorial http://www.slideshare.net/fabpot/dependency- injectionzendcon2010 http://diogobesson.com.br/programacao/php-traits/ http://code-squad.com/screencast/composer http://mwop.net/blog/267-Getting-started-writing- ZF2-modules.html http://static.zend.com/topics/ZF2-Getting-

  48. Contato

  49. @eminetto http://www.eltonminetto.net http://coderockr.com http://code-squad.com