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. as novidades do
    PHP
    e o
    Zend Framework 2

    View Slide

  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

    View Slide

  3. PHP

    View Slide

  4. Namespaces

    View Slide

  5. 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();
    }
    }

    View Slide

  6. Traits

    View Slide

  7. trait Veiculo {
    public function rodar(){
    /* x */
    }
    }
    trait Aeronave {
    public function voar(){
    /* x */
    }
    }
    trait Brinquedo {
    private $pedagogico;
    public function isPedagogico(){
    return $this->pedagogico;
    }
    }

    View Slide

  8. class Carrinho {
    use Veiculo, Brinquedo;
    }
    class Aviaozinho {
    use Aeronave, Brinquedo;
    }
    class Helicoptero {
    use Aeronave;
    }
    class TanqueDeGuerra {
    use Veiculo;
    }

    View Slide

  9. Servidor embutido

    View Slide

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

    View Slide

  11. PSR

    View Slide

  12. PSR - 0: regras de autoloader de classes
    PSR - 1: regras básicas de codificação
    PSR - 2: regras avançadas de codificação

    View Slide

  13. Composer

    View Slide

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

    View Slide

  15. Funções anônimas

    View Slide

  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;
    }
    ),
    );
    }

    View Slide

  17. Frameworks

    View Slide

  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.

    View Slide

  19. Zend Framework
    2

    View Slide

  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

    View Slide

  21. Vantagens

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. //ZF1
    class IndexController extends Zend_Controller_Action
    {
    public function indexAction()
    {
    $this->view->message = “Hello World”;
    }
    }
    Onde foi definido?

    View Slide

  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”)
    );
    }

    View Slide

  28. Fácil integração com frameworks e
    componentes compatíveis com o
    PSR-0 e Composer
    (Symfony, Doctrine, Monolog, etc)

    View Slide

  29. Desvantagens

    View Slide

  30. Pouca documentação

    View Slide

  31. Módulos

    View Slide

  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

    View Slide

  33. Totalmente reutilizáveis
    Dezenas de módulos desenvolvidos no
    http://modules.zendframework.com

    View Slide

  34. Eventos

    View Slide

  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

    View Slide

  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

    View Slide

  37. Injeção de
    dependências

    View Slide

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

    View Slide

  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

    View Slide

  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;

    View Slide

  41. ServiceManager

    View Slide

  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.

    View Slide

  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');

    View Slide

  44. MVC

    View Slide

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

    View Slide

  46. Referências

    View Slide

  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-

    View Slide

  48. Contato

    View Slide

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

    View Slide