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

Introdução ao Zend Framework 2

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.

Elton Minetto

October 25, 2012
Tweet

More Decks by Elton Minetto

Other Decks in Technology

Transcript

  1. 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
  2. PHP

  3. <?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(); } }
  4. trait Veiculo { public function rodar(){ /* x */ }

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

    use Aeronave, Brinquedo; } class Helicoptero { use Aeronave; } class TanqueDeGuerra { use Veiculo; }
  6. PSR

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

    1: regras básicas de codificação PSR - 2: regras avançadas de codificação
  8. public function getServiceConfig() { return array( 'factories' => array( 'Cache'

    => function($sm) { $config = include __DIR__ . 'config.php'; $cache = StorageFactory::factory( array( 'adapter' => $config['cache']) ); return $cache; } ), ); }
  9. 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.
  10. Desenvolvido pela Zend junto com a comunidade PHP Mais de

    2 anos de desenvolvimento Mais de 200 profissionais envolvidos Apoio Google, Microsoft, entre outras
  11. //ZF1 class IndexController extends Zend_Controller_Action { public function indexAction() {

    $this->view->message = “Hello World”; } } Onde foi definido?
  12. //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”) ); }
  13. "[] 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
  14. 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
  15. 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
  16. class User { protected $storage; public function __construct() { $this->storage

    = new SessionStorage(); } } $user = new User(); Fácil de usar Difícil de customizar
  17. 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
  18. //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;
  19. "[] é 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.
  20. /** * 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');
  21. MVC