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.
Palestra realizada em 2008, no CONAPHP (Congresso Nacional de PHP), que ocorreu dentro do CONISLI (Congresso Internacional de Software Livre), na FIAP (Faculdade de Informática e Administração Paulsta).
Palestra realizada em 2008, no CONAPHP (Congresso Nacional de PHP), que ocorreu dentro do CONISLI (Congresso Internacional de Software Livre), na FIAP (Faculdade de Informática e Administração Paulsta).
Begin juni 2013 brak het PRISM-schandaal uit: volgens
klokkenluider Edward Snowden heeft de Amerikaanse
veiligheidsdienst NSA rechtstreeks toegang tot gebruikersgegevens bij technologiegiganten Microsoft,
Google, Facebook…
Het schandaal schudde heel wat mensen wakker: we
lijken immers bereid om onze privacy op te geven voor
“veiligheid” of gewoon voor ons persoonlijk gemak. Niet
alleen overheden doen hier hun voordeel bij (“big brother is watching you”), maar ook privébedrijven, voornamelijk voor reclamedoeleinden.
Is privacy een illusie geworden in onze gedigitaliseerde, online wereld? Gastspreker Gene Vangampelaere denkt
van niet. Tijdens de gespreksavond stelt hij een aantal praktisch haalbare oplossingen voor om de privacy te
verhogen, maar hij verhult niet dat er een spanningsveld blijft bestaan tussen privacy en gebruiksgemak.
Voor deze gespreksavond koos VSVK opnieuw een
expert als spreker. Gene Vangampelaere studeerde
multimedia en communicatietechnologie aan de
Hogeschool West-Vlaanderen (Howest) en werkte als
softwareontwikkelaar. Sinds 2011 is hij als docent
sociale media verbonden aan de Howest. Hij is ook
trainer-consultant bij Syntra West.
De gespreksavond met als thema “Internet, belager van
mijn privacy” snijdt opnieuw een zeer actuele
problematiek aan. Ook nieuwsgierig hoe openbaar jouw
persoonlijke gegevens wel zijn? Afspraak op
donderdag 30 januari in de bar van de Stedelijke
Academie voor Muziek en Woord !
Begin juni 2013 brak het PRISM-schandaal uit: volgens
klokkenluider Edward Snowden heeft de Amerikaanse
veiligheidsdienst NSA rechtstreeks toegang tot gebruikersgegevens bij technologiegiganten Microsoft,
Google, Facebook…
Het schandaal schudde heel wat mensen wakker: we
lijken immers bereid om onze privacy op te geven voor
“veiligheid” of gewoon voor ons persoonlijk gemak. Niet
alleen overheden doen hier hun voordeel bij (“big brother is watching you”), maar ook privébedrijven, voornamelijk voor reclamedoeleinden.
Is privacy een illusie geworden in onze gedigitaliseerde, online wereld? Gastspreker Gene Vangampelaere denkt
van niet. Tijdens de gespreksavond stelt hij een aantal praktisch haalbare oplossingen voor om de privacy te
verhogen, maar hij verhult niet dat er een spanningsveld blijft bestaan tussen privacy en gebruiksgemak.
Voor deze gespreksavond koos VSVK opnieuw een
expert als spreker. Gene Vangampelaere studeerde
multimedia en communicatietechnologie aan de
Hogeschool West-Vlaanderen (Howest) en werkte als
softwareontwikkelaar. Sinds 2011 is hij als docent
sociale media verbonden aan de Howest. Hij is ook
trainer-consultant bij Syntra West.
De gespreksavond met als thema “Internet, belager van
mijn privacy” snijdt opnieuw een zeer actuele
problematiek aan. Ook nieuwsgierig hoe openbaar jouw
persoonlijke gegevens wel zijn? Afspraak op
donderdag 30 januari in de bar van de Stedelijke
Academie voor Muziek en Woord !
Desmistificando o framework da Zend, foi ministrado no 2.PHP Maranhão, encontro anual dos usuários PHP do estado do Maranhão. O Objetivo desta palestra e dar dicas sobre como começar e quais componentes estudar para então começar a desenvolver aplicações com esse poderoso framework que é mais simples do que parece.
Palestra Zend Framework CISL 2012 - ZF no Governo FederalFlávio Lisboa
Palestra sobre Zend Framework proferida em transmissão do Comitê Técnico de Implementação de Software Livre no Governo Federal. Faz uma abordagem geral sobre Zend Framework com informações sobre uso no governo brasileiro.
Saiba o que é um framework e como eles podem mudar a vida de um profissional de TI. Saber escolher o framework certo pode levar o seu projeto ao sucesso.
Desenvolvimento de Aplicações com Zend Framework e Yahoo! User InterfaceDomingos Teruel
Apresentação feita durante a 2ª PHP-SC Conference 2009 - Itajaí - SC
Sobre desenvolvimento de aplicações usando Zend Framework e Yahoo! User Interface, Y!UI
Em uma visão macro, o que tiveram destaque para uma filtragem mais especificas foram o ZEND2 devido a robustez e grande credibilidade de mercado, CodeIgniter devido a grande parte do que saim do desenvolvimento "comum" e passam a ter um primeiro contado com algum tipo de framework, e suas comunidades bastante ativas, e Yii a mais jovens desse framework, porém com um grande crescimento nos últimos anos no meio do desenvolvimento PHP.
Obtive um resultado positivo, pois aderir por uma escolhe bastante objetiva e que hoje tem me dado resultado de usabilidade e tempo.
Mini-curso ministrado no 2º Encontro de Usuários PHP de Minas Gerais, realizado em outubro de 2009. Desenvolvendo aplicações poderosas com Zend Framework.
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
Nesta apresentação abordamos um achado de uma pesquisa de doutorado sobre cooperativas de software livre no Brasil e fazemos uma comparação com a Argentina. Essa comparação é feita após uma contextualização do cooperativismo no mundo e no Brasil.
Aprenda a afiar suas garras com LaminasFlávio Lisboa
Nesta palestra apresento a trajetória do meu trabalho de instrutor e promotor do Zend Framework, agora Laminas, culminando com o lançamento do livro PHP Web Development with Laminas, pela Packt Publishing. Apresento os tópicos de uma formação completa de desenvolvedor web PHP trabalhando com aplicações orientadas a objeto usando padrões de projeto e desenvolvimento orientado a testes.
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
Esta palestra visa mostrar como o software livre se beneficia do paradigma do método científico e quais as vantagens de times de desenvolvimento de assimilarem as boas práticas desse método e a vantagem de manter sempre uma atitude crítica na busca de soluções de problemas.
Tópicos abordados:
* O método científico e os paradigmas da ciência
* Como o software livre aplica o método científico
* Como assimilar isso em sua empresa
Apresentação feita na 2ª edição do evento Micro Serviços Macro Negócios. Esta palestra irá mostrar como criar uma arquitetura de uma aplicação para microsserviços em PHP usando o microframework Mezzio. Para tanto, será apresentado um estudo de caso de uma aplicação PHP baseada em microsserviços, construída para um ambiente distribuído usando Kubernetes. O estudo de caso mostrará como microframework Mezzio facilita a construção de microsserviços a partir do conceito de middleware”. Serão apresentados ainda extensões para o Mezzio e seu uso combinado ao framework Swoole.
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
Da Teoria da Evolução para a solução de problemas baseada em busca, com provocações para quem não gosta de pensar.
O componente usado na demonstração está disponível em https://github.com/fgsl/geneticalgorithm.
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
Esta palestra aborda: a necessidade e vantagens de utilização de um ambiente integrado de desenvolvimento e de como integrá-lo com ferramentas de linha de comando relacionadas à rotina de construção de software; e a questão da depuração de código, as técnicas para descoberta de causas de bugs e ferramentas para localizar gargalos no desempenho de aplicações PHP.
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
Nesta palestra falamos sobre o governo eletrônico, alguns decretos federais relativos a soberania nacional e publicidade de informações para a sociedade, sobre o Serviço Federal de Processamento de Dados, sua produção de sistemas em PHP com destaque para dois produtos, o Sagui e o SerproDrive.
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
Nesta palestra abordaremos diversos aspectos da arquitetura de software contextualizados para o cenário de aplicações PHP construídas a partir da integração de microsserviços integrados. Dentro desse cenário, iremos separar o que é responsabilidade do PHP e o que não é, mas com o que ele pode contribuir (ou como ele pode evitar que seus parceiros tornem sua vida difícil). Abordaremos motivações, boas práticas e orientações para lidar com transações, manipulação de erros, execução de código lento, execução em linha de comando, coleta de dados de usuário, análise e business intelligence.
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