Palestra Zend Framework FISL XI
-
Upload
flavio-lisboa -
Category
Technology
-
view
382 -
download
1
Transcript of Palestra Zend Framework FISL XI
![Page 1: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/1.jpg)
Aplicando MVC em PHP com Zend Framework
Visão
Controlador
Modelo
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 2: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/2.jpg)
Quem sou eu?
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 3: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/3.jpg)
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.
![Page 4: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/4.jpg)
Não vamos discutir PHP...
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
...porque um terço das aplicações do mundo já o utiliza...
![Page 5: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/5.jpg)
E aplicações de negócio baseadas em PHP tendem a crescer...
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Source: Gartner (December 2007)
Prog
ram
mer
s (M
illio
ns)
2006 2007 2008 2009 2010 2011 2012 2013
Part-Time DevelopersAnd Hobbyists
Independent Software Vendors
Corporate IT Developers
![Page 6: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/6.jpg)
Arquitetura geral do Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 7: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/7.jpg)
Arquitetura geral do Zend Framework
MVCController
View
Data
Database
XML
Search
i18n
Locale
Translate
Measure
Date
Calendar
Currency
Web Services
Feed
Client
Server
Services
Core
Config
Log
Registry
Session
CacheSecurity
Acl
Auth
Filter
Validate
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 8: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/8.jpg)
Arquitetura geral do Zend Framework
Transformers é uma marca registrada da Hasbro (http://www.hasbro.com). Todos os direitos reservados. Fonte: blog.niot.net
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 9: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/9.jpg)
Arquitetura geral do Zend Framework
Transformers é uma marca registrada da Hasbro (http://www.hasbro.com). Todos os direitos reservados. Fonte: http://www.nipoheroes.hpg.ig.com.br/SSentai/Changeman/ArmasChangeman/ArmasChangeman.html
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 10: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/10.jpg)
Ou seja, Zend Framework é:
► Uma biblioteca de componentes. (fracamente acoplados).► Um framework. (extensível e flexível).
Arquitetura geral do Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 11: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/11.jpg)
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.
![Page 12: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/12.jpg)
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.
![Page 13: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/13.jpg)
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.
![Page 14: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/14.jpg)
Arquitetura geral do Zend Framework
1. TENHO UM PROBLEMA!
5. RESOLVI O PROBLEMA!(PELO MENOS AGORA...)
2. USO A COMUNIDADE 3. NÃO POSSO ESPERAR!
4. FAÇO UM FORK (OU POG)
6. E SE TIVER QUE FAZER MANUTENÇÃO?
METODOLOGIA “NÃO QUERO PAGAR E TENHO PRAZO PRA ENTREGAR”
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 15: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/15.jpg)
Arquitetura geral do Zend Framework
1. TENHO UM PROBLEMA!
5. RESOLVI O PROBLEMADIREITO!
2. USO A COMUNIDADE 3. NÃO POSSO ESPERAR!
4. ESTENDO, USANDO A INTERFACE PADRÃO, E SUBMETO PRA COMUNIDADE
6. O QUE FOI PRA COMUNIDADE SERÁ TESTADO, APERFEIÇOADO E PODEREI UTILIZAR SEM CAUSAR IMPACTO NA APLICAÇÃO!
METODOLOGIA ZEND FRAMEWORK
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 16: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/16.jpg)
Arquitetura geral do Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
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_'));
![Page 17: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/17.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Shrek é uma marca registrada da Dreamworks (http://www.dreamworksanimation.com). Todos os direitos reservados.
APLICAÇÕES SÃO COMO CEBOLAS...
![Page 18: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/18.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
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.
Fonte: http://www.lojadeanimes.com.br
![Page 19: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/19.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
v
M
CControlador Frontal
HTTP
REQUEST
![Page 20: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/20.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
SetEnv APPLICATION_ENV development
RewriteEngine OnRewriteRule ^.*$ public/index.php
O Controlador Frontal exige reescrita de URL.
A aplicação interpreta a requisição, não o servidor.
![Page 21: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/21.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
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
![Page 22: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/22.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
$router = $ctrl->getRouter(); $router->addRoute( 'user', new Zend_Controller_Router_Route('user/:username', array('controller' => 'user', 'action' => 'info')) );
Mas o framework permite a criação de rotas customizadas.
![Page 23: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/23.jpg)
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.
![Page 24: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/24.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
# Unix:% zf.sh create project quickstart
# DOS/Windows:C:> zf.bat create project quickstart
![Page 25: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/25.jpg)
MVC no Zend
Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Estrutura do projeto MVC Zend Framework
convencional
quickstart|-- application| |-- Bootstrap.php| |-- configs| | `-- application.ini| |-- controllers| | |-- ErrorController.php| | `-- IndexController.php| |-- models| `-- views| |-- helpers| `-- scripts| |-- error| | `-- error.phtml| `-- index| `-- index.phtml|-- library|-- public| `-- index.php`-- tests |-- application | `-- bootstrap.php |-- library | `-- bootstrap.php `-- phpunit.xml
14 directories, 10 files
![Page 26: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/26.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Inicialização da aplicação
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{}
![Page 27: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/27.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Configuração da aplicação[production]phpSettings.display_startup_errors = 0phpSettings.display_errors = 0includePaths.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 = 1phpSettings.display_errors = 1
[development : production]phpSettings.display_startup_errors = 1phpSettings.display_errors = 1
ControladorFrontal
![Page 28: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/28.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
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();
![Page 29: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/29.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
O Controle
Fonte: http://cesarpallares.files.wordpress.com/2009/01/agente-86.jpg
![Page 30: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/30.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
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 }}
![Page 31: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/31.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Controlador de errosclass 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; } $this->view->exception = $errors->exception; $this->view->request = $errors->request; }}
![Page 32: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/32.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Fluxo da requisição e plugins
C
![Page 33: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/33.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
O Modelo
Cláudia Schiffer Naomi Campbell Riyo Mori
![Page 34: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/34.jpg)
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...
![Page 35: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/35.jpg)
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
![Page 36: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/36.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
A Visão
Fonte: http://amigosdeoracao.files.wordpress.com/2009/07/olho_azul1.jpg
![Page 37: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/37.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
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)
![Page 38: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/38.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Um layout pode servir para várias páginas:
Layout
Página 1 Página 2 Página 3 Página 4 Página 5
CSSJavascript
CONTEÚDO, NO CORPO DO DOCUMENTO
![Page 39: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/39.jpg)
MVC no Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
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
![Page 40: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/40.jpg)
Exemplo de como estender o framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Projeto FGSL2ZF
Tratado no livro:
Criando Aplicações PHP com Zend e Dojo
http://sourceforge.net/projects/fgslibraryphp
![Page 42: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/42.jpg)
MUITO OBRIGADO!
![Page 43: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/43.jpg)
Referências
● Matthew Weier O'Phinney. Zend Framework Tutorial. ZendCon 2009.
● Martin Fowler. Padrões de Arquitetura de Aplicações Corporativas. Bookman, 2006.
![Page 44: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/44.jpg)
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
![Page 45: Palestra Zend Framework FISL XI](https://reader031.fdocuments.net/reader031/viewer/2022030316/5874fb991a28ab29208b4bad/html5/thumbnails/45.jpg)
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