introdução ao zend framework 2

49
as novidades do PHP e o Zend Framework 2

Upload: elton-minetto

Post on 25-Jan-2015

1.210 views

Category:

Technology


3 download

DESCRIPTION

Apresentação sobre as novidades do PHP e do Zend Framework 2

TRANSCRIPT

Page 1: Introdução ao Zend Framework 2

as novidades do PHPe o

Zend Framework 2

Page 2: Introdução ao Zend Framework 2

Elton MinettoGraduado/pós-graduado em Ciência da Computação

Desenvolvedor desde 1997Professor desde 2004

Autor de dois livros sobre PHP

Sócio da CoderockrInstrutor do Code Squad

Page 3: Introdução ao Zend Framework 2

PHP

Page 4: Introdução ao Zend Framework 2

Namespaces

Page 5: Introdução ao Zend Framework 2

<?phpnamespace Core\Service;

use Zend\Http\Client as HttpClient;use Zend\Http\Request;class Auth { public function __construct($apiKey, $apiUri, $rpcUri)  {  $this->httpClient = new HttpClient(); }}

Page 6: Introdução ao Zend Framework 2

Traits

Page 7: Introdução ao Zend Framework 2

trait Veiculo { public function rodar(){ /* x */ }}

trait Aeronave { public function voar(){ /* x */ }}

trait Brinquedo { private $pedagogico;

public function isPedagogico(){ return $this->pedagogico; }}

Page 8: Introdução ao Zend Framework 2

class Carrinho { use Veiculo, Brinquedo;}

class Aviaozinho { use Aeronave, Brinquedo;}

class Helicoptero { use Aeronave;}

class TanqueDeGuerra { use Veiculo;}

Page 9: Introdução ao Zend Framework 2

Servidor embutido

Page 10: Introdução ao Zend Framework 2

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

Page 11: Introdução ao Zend Framework 2

PSR

Page 12: Introdução ao Zend Framework 2

PSR - 0: regras de autoloader de classesPSR - 1: regras básicas de codificação

PSR - 2: regras avançadas de codificação

Page 13: Introdução ao Zend Framework 2

Composer

Page 14: Introdução ao Zend Framework 2

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

Page 15: Introdução ao Zend Framework 2

Funções anônimas

Page 16: Introdução ao Zend Framework 2

public function getServiceConfig(){ return array( 'factories' => array( 'Cache' => function($sm) { $config = include __DIR__ . 'config.php'; $cache = StorageFactory::factory( array( 'adapter' => $config['cache']) ); return $cache; } ), );}

Page 17: Introdução ao Zend Framework 2

Frameworks

Page 18: Introdução ao Zend Framework 2

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.

Page 19: Introdução ao Zend Framework 2

Zend Framework2

Page 20: Introdução ao Zend Framework 2

Desenvolvido pela Zend junto com a comunidade PHP

Mais de 2 anos de desenvolvimentoMais de 200 profissionais envolvidos

Apoio Google, Microsoft, entre outras

Page 21: Introdução ao Zend Framework 2

Vantagens

Page 22: Introdução ao Zend Framework 2

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

Page 23: Introdução ao Zend Framework 2

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

Não precisa assinar termos

Page 24: Introdução ao Zend Framework 2

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

Page 25: Introdução ao Zend Framework 2

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

testar

Page 26: Introdução ao Zend Framework 2

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

Onde foi definido?

Page 27: Introdução ao Zend Framework 2

//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 28: Introdução ao Zend Framework 2

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

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

Page 29: Introdução ao Zend Framework 2

Desvantagens

Page 30: Introdução ao Zend Framework 2

Pouca documentação

Page 31: Introdução ao Zend Framework 2

Módulos

Page 32: Introdução ao Zend Framework 2

"[] 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 33: Introdução ao Zend Framework 2

Totalmente reutilizáveisDezenas de módulos desenvolvidos no

http://modules.zendframework.com

Page 34: Introdução ao Zend Framework 2

Eventos

Page 35: Introdução ao Zend Framework 2

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

Page 36: Introdução ao Zend Framework 2

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 37: Introdução ao Zend Framework 2

Injeção de dependências

Page 38: Introdução ao Zend Framework 2

class User{ protected $storage;

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

$user = new User();

Fácil de usar

Difícil de customizar

Page 39: Introdução ao Zend Framework 2

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 40: Introdução ao Zend Framework 2

//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 41: Introdução ao Zend Framework 2

ServiceManager

Page 42: Introdução ao Zend Framework 2

"[] é 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 43: Introdução ao Zend Framework 2

/** * 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 44: Introdução ao Zend Framework 2

MVC

Page 45: Introdução ao Zend Framework 2

Tudo é um evento Controllers são serviços

Page 46: Introdução ao Zend Framework 2

Referências

Page 48: Introdução ao Zend Framework 2

Contato