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