49
ZF2 Viking Style

Zf2 Viking Style

Embed Size (px)

DESCRIPTION

Nessa apresentação usamos as Leis Vikings para aprender as principais características do Zend Framework 2

Citation preview

Page 1: Zf2 Viking Style

ZF2Viking Style

Page 2: Zf2 Viking Style

Elton Minetto

CTO da Coderockr e do Code SquadMembro da diretoria da ABRAPHP

Page 3: Zf2 Viking Style

As leis vikings

Page 4: Zf2 Viking Style

Seja direto

Page 5: Zf2 Viking Style

No more magic!No ZF2 tudo é mais explícito, fácil de

manter e testar

Page 6: Zf2 Viking Style

//ZF1class IndexController extends Zend_Controller_Action{ public function indexAction() { $this->view->message = “Hello World”; }}

Onde foi definido?

Page 7: Zf2 Viking Style

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

Page 8: Zf2 Viking Style

Seja versátil e ágil

Page 9: Zf2 Viking Style

Fácil instalação e atualizaçãovia Composer

Page 10: Zf2 Viking Style

No ZF2 a estrutura é mais flexível, configurável

Page 11: Zf2 Viking Style

ZFTool

Page 12: Zf2 Viking Style

php composer.phar require zendframework/zftool:dev-master

Page 13: Zf2 Viking Style

php ./vendor/bin/zf.php create project Todo

cd Todo

php composer.phar self-update

php composer.phar install

Page 14: Zf2 Viking Style

cd ../php ./vendor/bin/zf.php create module Api Todo/

Page 15: Zf2 Viking Style

Use as armas de maior qualidade

Page 16: Zf2 Viking Style

Usa recursos mais avançados do PHP5.3.3 em diante

Page 17: Zf2 Viking Style

Fácil integração com frameworks e componentes compatíveis com o

PSR-0 e Composer(Symfony, Doctrine, Monolog, etc)

Page 18: Zf2 Viking Style

"require": { "php": ">=5.3.3", "zendframework/zendframework": ">2.2.0rc1", "symfony/serializer": "2.3.*@dev", "phpunit/php-timer": "1.0.4", "phpunit/phpunit-mock-objects": "1.2.*@dev", "phpunit/php-code-coverage": "1.2.*@dev", "phpunit/phpunit": "3.7.*@dev", "doctrine/dbal": "*", "doctrine/orm": "2.4.*", "jms/serializer": "*", "zendframework/zendservice_Apple_Apns": "*", "zendframework/ZendService_Google_Gcm": "*", "CodePlex/PHPExcel": "dev-master", "sybio/image-workshop": "dev-master"},

Page 19: Zf2 Viking Style

Mantenha suas armas

em boas condições

Page 20: Zf2 Viking Style
Page 21: Zf2 Viking Style

Encontre bons

companheiros de batalha

Page 22: Zf2 Viking Style

Desenvolvido pela Zend junto com a comunidade PHP

Mais de 2 anos de desenvolvimentoMais de 200 profissionais envolvidos

Apoio Google, Microsoft, entre outras

Page 23: Zf2 Viking Style
Page 24: Zf2 Viking Style

Concorde com os pontos

importantes

Page 25: Zf2 Viking Style

PSRDesign patterns

Page 26: Zf2 Viking Style

Escolha atividades

que fortaleçam o

grupo

Page 27: Zf2 Viking Style
Page 28: Zf2 Viking Style

Processo de contribuição mais simples Pull-requests no Github

Não precisa assinar termos

Page 29: Zf2 Viking Style

encontre o que o

mercado precisa

Page 30: Zf2 Viking Style

Eventos

Page 31: Zf2 Viking Style

Como introduzir logs e debugs no código 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

Page 32: Zf2 Viking Style

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

Page 33: Zf2 Viking Style

ServiceManager

Page 34: Zf2 Viking Style

"[] é 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.

Page 35: Zf2 Viking Style

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

Page 36: Zf2 Viking Style

mantenha as coisas

arrumadas e organizadas

Page 37: Zf2 Viking Style

Módulos

Page 38: Zf2 Viking Style

"[] 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

Page 39: Zf2 Viking Style

Totalmente reutilizáveisDezenas de módulos desenvolvidos no

http://modules.zendframework.com

Page 40: Zf2 Viking Style

Injeção de dependências

Page 41: Zf2 Viking Style

class User{ protected $storage;

public function __construct() { $this->storage = new SessionStorage(); }}

$user = new User();

Fácil de usar

Difícil de customizar

Page 42: Zf2 Viking Style

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

Page 43: Zf2 Viking Style

//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;

Page 44: Zf2 Viking Style

MVC

Page 45: Zf2 Viking Style

Tudo é um evento Controllers são serviços

Page 46: Zf2 Viking Style

Referências

Page 47: Zf2 Viking Style

http://www.slideshare.net/weierophinney/zend-framework-20-patterns-tutorialhttp://www.slideshare.net/fabpot/dependency-injectionzendcon2010http://eltonminetto.net/blog/2012/06/21/as-leis-vikings/http://mwop.net/blog/267-Getting-started-writing-ZF2-modules.htmlhttp://static.zend.com/topics/ZF2-Getting-started-20120912.pdfhttp://blog.evan.pro/introduction-to-the-zend-framework-2-

Page 48: Zf2 Viking Style

Contato