O documento discute a aplicação do padrão MVC no framework PHP Zend Framework. O documento explica a arquitetura geral do Zend Framework, como ele implementa o padrão MVC, e os principais componentes de modelo, visão e controle. O documento também fornece um exemplo de como estender o framework.
3. agenda
● Arquitetura geral do Zend Framework
● MVC no Zend Framework
● Camada de Controle
● Camada de Modelo
● Camada de Visão
● Exemplo de como estender o framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
4. Não vamos discutir PHP...
...porque um terço das aplicações do mundo já o
utiliza...
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
5. E aplicações de negócio baseadas
em PHP tendem a crescer...
Part-Time Independent Corporate
Developers Software
And Hobbyists Vendors IT
Developers
Programmers (Millions)
2006 2007 2008 2009 2010 2011 2012 2013
Source: Gartner (December 2007)
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
6. Arquitetura geral do Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
7. Arquitetura geral do Zend Framework
Data
Database
MVC XML
Controller Search
View PDF
Core
Security
Cache i18n
Web Services
Acl Config Locale Date
Auth Feed
Log Translate Calendar
Filter Client
Registry Measure Currency
Validate Server
Session
Services
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
8. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Arquitetura geral do Zend Framework
Fonte: blog.niot.net
Transformers é uma marca registrada da Hasbro (http://www.hasbro.com). Todos os direitos reservados.
9. www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Arquitetura geral do Zend Framework
Fonte: http://www.nipoheroes.hpg.ig.com.br/SSentai/Changeman/ArmasChangeman/ArmasChangeman.html
Transformers é uma marca registrada da Hasbro (http://www.hasbro.com). Todos os direitos reservados.
10. Arquitetura geral do Zend Framework
Ou seja, Zend Framework é:
► Uma biblioteca de componentes.
(fracamente acoplados).
► Um framework.
(extensível e flexível).
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
11. Arquitetura geral do Zend Framework
Biblioteca de
componentes
fracamente
acoplados?
O que isso significa?
Que outros frameworks
podem usar
componentes do Zend.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
12. Arquitetura geral do Zend Framework
Framework extensível
e flexível?
O que isso significa?
Que Zend Framework
pode usar outros
frameworks e
componentes COMO
SE FOSSEM
REALMENTE PARTE
DELE.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
13. Arquitetura geral do Zend Framework
Mais do que isso!
A arquitetura do Zend
Framework aproveita
o modelo de negócio
de software livre e
evita forks!
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
14. Arquitetura geral do Zend Framework
METODOLOGIA “NÃO QUERO PAGAR E TENHO PRAZO PRA ENTREGAR”
1. TENHO UM PROBLEMA! 2. USO A COMUNIDADE 3. NÃO POSSO ESPERAR!
6. E SE TIVER QUE FAZER
5. RESOLVI O PROBLEMA! MANUTENÇÃO?
4. FAÇO UM FORK (OU POG) (PELO MENOS AGORA...)
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
15. Arquitetura geral do Zend Framework
METODOLOGIA ZEND FRAMEWORK
1. TENHO UM PROBLEMA! 2. USO A COMUNIDADE 3. NÃO POSSO ESPERAR!
6. O QUE FOI PRA
5. RESOLVI O PROBLEMA COMUNIDADE SERÁ
4. ESTENDO, USANDO DIREITO! TESTADO, APERFEIÇOADO E
A INTERFACE PADRÃO, PODEREI UTILIZAR SEM
E SUBMETO PRA COMUNIDADE CAUSAR IMPACTO NA
APLICAÇÃO!
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
16. Arquitetura geral do Zend Framework
Namespaces
Os nomes das classes possuem um
relacionamento de 1 para 1 com o sistema de
arquivos:
Zend_Db_Table => Zend/Db/Table.php
$al = Zend_Loader_Autoloader::getInstance();
$al->registerNamespace('Huguinho_');
$al->registerNamespace(array('Zezinho_',
'Luisinho_'));
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
17. MVC no Zend Framework
APLICAÇÕES SÃO COMO CEBOLAS...
Shrek é uma marca registrada da Dreamworks (http://www.dreamworksanimation.com). Todos os direitos reservados.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
18. MVC no Zend Framework
Fonte: http://blog.fedecarg.com/2008/07/28/zend-framework-architecture/
Homem-Aranha é uma marca registrada da Marvel (http://www.marvel.com). Todos os direitos reservados.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte. Fonte: http://www.lojadeanimes.com.br
19. MVC no Zend Framework
C v
HTTP Controlador
REQUEST
Frontal
M
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
20. MVC no Zend Framework
O Controlador Frontal exige reescrita de URL.
A aplicação interpreta a requisição, não o
servidor.
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteRule ^.*$ public/index.php
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
21. MVC no Zend Framework
As rotas-padrão do Zend framework são:
aplicação/controlador/ação/chave1/valor1
aplicação/módulo/controlador/ação/chave1/valor1
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
22. MVC no Zend Framework
Mas o framework permite a criação de rotas
customizadas.
$router = $ctrl->getRouter();
$router->addRoute(
'user',
new
Zend_Controller_Router_Route('user/:use
rname',
array('controller' => 'user',
'action' => 'info'))
);
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
23. MVC no Zend Framework
Um projeto MVC pode ser criado rapidamente
com Zend Tool.
Ele pode ser executado na linha de comando ou
integrado com IDEs como Eclipse e Netbeans.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
24. MVC no Zend Framework
# Unix:
% zf.sh create project quickstart
# DOS/Windows:
C:> zf.bat create project quickstart
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
25. MVC no quickstart
|-- application
Zend |
|
|-- Bootstrap.php
|-- configs
Framework |
|
| `-- application.ini
|-- controllers
| | |-- ErrorController.php
| | `-- IndexController.php
| |-- models
| `-- views
| |-- helpers
| `-- scripts
Estrutura |
|
|-- error
| `-- error.phtml
do projeto MVC | `-- index
| `-- index.phtml
Zend Framework |-- library
convencional |-- public
| `-- index.php
`-- tests
|-- application
| `-- bootstrap.php
|-- library
| `-- bootstrap.php
`-- phpunit.xml
14 directories, 10 files
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
26. MVC no Zend Framework
Inicialização da aplicação
<?php
class Bootstrap
extends Zend_Application_Bootstrap_Bootstrap
{
}
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
27. MVC no Zend Framework
Configuração da aplicação
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory =
APPLICATION_PATH "/controllers"
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
Controlador
phpSettings.display_errors = 1 Frontal
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
28. MVC no Zend Framework
Carregamento da Configuração
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
29. MVC no Zend Framework
O Controle
Fonte: http://cesarpallares.files.wordpress.com/2009/01/agente-86.jpg
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
30. MVC no Zend Framework
Padrão de Projeto: Controlador de página
<?php
class IndexController
extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// action body
}
}
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
31. MVC no Zend Framework
Controlador de erros
class ErrorController extends Zend_Controller_Action
{
public function errorAction()
{
$errors = $this->_getParam('error_handler');
switch ($errors->type) {
case 'EXCEPTION_NO_CONTROLLER':
case 'EXCEPTION_NO_ACTION':
// 404 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = 'Page not found';
break;
default:
// application error
$this->getResponse()->setHttpResponseCode(500);
$this->view->message = 'Application error';
break;
}
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
32. MVC no Zend Framework
Fluxo da requisição e plugins
C
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
33. MVC no Zend Framework
O Modelo
Cláudia Schiffer Naomi Campbell Riyo Mori
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
34. MVC no Zend Framework
Não tem Zend_Model...
Mas tem:
►Zend_Db_Table
►Zend_Feed
►Zend_Rest
►Zend_Service
►Zend_Soap
►Zend_XmlRpc
►Zend_Search_Lucene
...
35. MVC no Zend Framework
Zend_Db_Table
►Mapeia tabelas relacionais para classes PHP.
►Define relacionamentos e restrições no modelo.
►Permite construir consultas orientadas a objeto
com Zend_Db_Table_Select.
►Não obriga a criação de classes PHP (>1.10),
pode criar modelos dinamicamente.
►Pode ser usado de dois modos:
→Tenho saudade de SQL
→ Active Record
36. MVC no Zend Framework
A Visão
Fonte: http://amigosdeoracao.files.wordpress.com/2009/07/olho_azul1.jpg
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
37. MVC no Zend Framework
Para a interface com o usuário, Zend Framework
usa o padrão de projeto Vista em Duas Etapas.
1) Primeiro ele transforma dos dados
provenientes do modelo, ou enviados pelo
controlador, em uma apresentação lógica, sem
qualquer formatação específica (Zend_View)
2) Depois, ele converte essa apresentação lógica
na formatação real necessária (Zend_Layout)
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
38. MVC no Zend Framework
Um layout pode servir para várias páginas:
CSS
Javascript Layout
Página 1 Página 2 Página 3 Página 4 Página 5
CONTEÚDO, NO CORPO DO DOCUMENTO
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
39. MVC no Zend Framework
Zend_View permite reutilização de componente
de visão: view partials
Visão Principal
Partial 1 Partial 2 Partial 3
Partials podem ser reaproveitados
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
40. Exemplo de como estender o
framework
Projeto FGSL2ZF
http://sourceforge.net/projects/fgslibraryphp
Tratado no livro:
Criando Aplicações PHP com Zend e Dojo
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
43. Referências
● Matthew Weier O'Phinney. Zend Framework Tutorial. ZendCon 2009.
● Martin Fowler. Padrões de Arquitetura de Aplicações Corporativas. Bookman, 2006.
44. Mais informações
● Zend Framework website http://framework.zend.com
● Zend Developer Zone http://devzone.zend.com
● ZFTutorials forum http://www.zftutorials.com
● Blogs
● Matthew Weier O'Phinney: http://weierophinney.net/matthew
● Cal Evans: http://blog.calevans.com
● Andries Seutens: http://andries.systray.be/blog
● Rob Allen: http://akrabat.com
● Zend Framework Brasil
● http://www.zfbrasil.com
● http://groups.google.com/group/zfbrasil
45. Créditos das imagens
● Imagem do Pensador de Auguste Rodin:
http://phabrycyulandia.blogspot.com/2010/06/pensamento-em-bronze.html
● Imagem da nuvem: http://ointercessor.blogspot.com/2010/03/nuvem-de-deus.html
● Posição romana “poupem o gladiador”:
http://www.observadordaqualidade.com.br/o_que_eh_qualidade/o_que_%20eh_qualidade.gif
● Cogumelo nuclear: http://naweb.files.wordpress.com/2008/04/fim.jpg
● Relógio com homem como ponteiro:
http://www.blogdosempreendedores.com.br/wp-content/uploads/2010/04/tempo.jpg
● Tomada e plugue no novo padrão brasileiro:
http://tecnocracia.com.br/wp-content/uploads/2007/07/tomadas_padrao3pinos.jpg
● Menino vibrando de alegria:
http://20anosdesolidao.blogspot.com/2009/10/alegria-alegria-eu-voltei-para-ninguem.html