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 full-size 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 full-size slide

  3. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  6. Servidor embutido

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. Funções anônimas

    View full-size slide

  11. 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 full-size slide

  12. 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 full-size slide

  13. Zend Framework
    2

    View full-size slide

  14. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  20. //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 full-size slide

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

    View full-size slide

  22. Desvantagens

    View full-size slide

  23. Pouca documentação

    View full-size slide

  24. "[] 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 full-size slide

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

    View full-size slide

  26. 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 full-size slide

  27. 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 full-size slide

  28. Injeção de
    dependências

    View full-size slide

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

    View full-size slide

  30. 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 full-size slide

  31. //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 full-size slide

  32. ServiceManager

    View full-size slide

  33. "[] é 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 full-size slide

  34. /**
    * 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 full-size slide

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

    View full-size slide

  36. Referências

    View full-size slide

  37. 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 full-size slide

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

    View full-size slide