Upload
elton-minetto
View
1.151
Download
3
Embed Size (px)
DESCRIPTION
Nessa apresentação usamos as Leis Vikings para aprender as principais características do Zend Framework 2
Citation preview
ZF2Viking Style
Elton Minetto
CTO da Coderockr e do Code SquadMembro da diretoria da ABRAPHP
As leis vikings
Seja direto
No more magic!No ZF2 tudo é mais explícito, fácil de
manter e testar
//ZF1class IndexController extends Zend_Controller_Action{ public function indexAction() { $this->view->message = “Hello World”; }}
Onde foi definido?
//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”) );}
Seja versátil e ágil
Fácil instalação e atualizaçãovia Composer
No ZF2 a estrutura é mais flexível, configurável
ZFTool
php composer.phar require zendframework/zftool:dev-master
php ./vendor/bin/zf.php create project Todo
cd Todo
php composer.phar self-update
php composer.phar install
cd ../php ./vendor/bin/zf.php create module Api Todo/
Use as armas de maior qualidade
Usa recursos mais avançados do PHP5.3.3 em diante
Fácil integração com frameworks e componentes compatíveis com o
PSR-0 e Composer(Symfony, Doctrine, Monolog, etc)
"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"},
Mantenha suas armas
em boas condições
Encontre bons
companheiros de batalha
Desenvolvido pela Zend junto com a comunidade PHP
Mais de 2 anos de desenvolvimentoMais de 200 profissionais envolvidos
Apoio Google, Microsoft, entre outras
Concorde com os pontos
importantes
PSRDesign patterns
Escolha atividades
que fortaleçam o
grupo
Processo de contribuição mais simples Pull-requests no Github
Não precisa assinar termos
encontre o que o
mercado precisa
Eventos
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
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
ServiceManager
"[] é 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.
/** * 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');
mantenha as coisas
arrumadas e organizadas
Módulos
"[] 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
Totalmente reutilizáveisDezenas de módulos desenvolvidos no
http://modules.zendframework.com
Injeção de dependências
class User{ protected $storage;
public function __construct() { $this->storage = new SessionStorage(); }}
$user = new User();
Fácil de usar
Difícil de customizar
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
//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;
MVC
Tudo é um evento Controllers são serviços
Referências
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-
Contato
@eminettohttp://eltonminetto.net
http://coderockr.comhttp://code-squad.com