Este documento apresenta as principais novidades do PHP e do framework Zend Framework 2, incluindo namespaces, traits, servidor embutido, PSRs, Composer, funções anônimas, módulos, eventos, injeção de dependências e arquitetura MVC."
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
<?php namespace CoreService; use ZendHttpClientas HttpClient; use ZendHttpRequest; class Auth { public function __construct($apiKey, $apiUri, $rpcUri) { $this->httpClient = new HttpClient(); } }
trait Veiculo { public function rodar(){ /* x */ } } trait Aeronave { public function voar(){ /* x */ } } trait Brinquedo { private $pedagogico; public function isPedagogico(){ return $this->pedagogico; } }
8.
class Carrinho { use Veiculo, Brinquedo; } class Aviaozinho { use Aeronave, Brinquedo; } class Helicoptero { use Aeronave; } class TanqueDeGuerra { use Veiculo; }
Uma base deonde 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.
Desenvolvido pela Zendjunto com a comunidade PHP Mais de 2 anos de desenvolvimento Mais de 200 profissionais envolvidos Apoio Google, Microsoft, entre outras
//ZF1 class IndexController extendsZend_Controller_Action { public function indexAction() { $this->view->message = “Hello World”; } } Onde foi definido?
"[] 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
Como introduzir logse 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
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
class User { protected $storage; public function __construct() { $this->storage = new SessionStorage(); } } $user = new User(); Difícil de customizar Fácil de usar
39.
class User { protected $storage; public function __construct($storage) { $this->storage = $storage; } } Fácil de customizar $storage = new SessionStorage() $user = new User($storage); Mais difícil de usar
40.
//formas de injeçãode 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;
"[] é umregistro, 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.
43.
/** *Retorna a configuração do service manager do módulo * @return array */ public function getServiceConfig() { return array( 'factories' => array( 'ApplicationServiceAuth' => function($sm) { $dbAdapter = $sm->get('DbAdapter'); return new ServiceAuth($dbAdapter); }, ), ); } //uso em um controller $auth = $this->getServiceManager()->get('Application ServiceAuth');