Request Lifecycle im Zend Framework
-
Upload
mayflower-gmbh -
Category
Technology
-
view
2.866 -
download
2
description
Transcript of Request Lifecycle im Zend Framework
![Page 1: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/1.jpg)
© Mayflower GmbH 2010
Request Lifecycle imZend Framework
Markus Handschuh I 31.03.2011
![Page 2: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/2.jpg)
Mayflower GmbH I 2
Agenda
I Application Bootstrap
· Resources
I Zend_Controller_Front
· Plugins
I Routing
I Dispatcher
I Die Action und ihre Helper
![Page 3: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/3.jpg)
Mayflower GmbH I 3
Application Bootstrap
![Page 4: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/4.jpg)
Mayflower GmbH I 4
Application Bootstrap
index.php
/* 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 5: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/5.jpg)
Mayflower GmbH I 5
Application Bootstrap
I Bootstrapping von Class Resources
I Bootstrapping von Plugin Resources
I Run Zend_Controller_Front->dispatch()
![Page 6: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/6.jpg)
Mayflower GmbH I 6
Application Bootstrap Bootstrapping von Class Resources
I Methoden müssen protected sein..
· … und mit _init vorangestellt sein
Beispielprotected function _initLog() {}
![Page 7: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/7.jpg)
Mayflower GmbH I 7
Application Bootstrap Bootstrapping von Class Resources
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{ protected function _initRequest() { $this->bootstrap('FrontController'); $front = $this->getResource('FrontController'); $request = new Zend_Controller_Request_Http();
// your code // ... // e.g. $request->setBaseUrl('/mypath');
$front->setRequest($request); return $request; } }
![Page 8: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/8.jpg)
Mayflower GmbH I 8
Application Bootstrap Bootstrapping von Plugin Resources
I Die Klasse muss abgeleitet sein von Zend_Application_Resource_ResourceAbstract
I Die Klasse muss eine init()-Methode implementieren
Beispielclass My_Resource_Test extends Zend_Application_Resource_ResourceAbstract {}
![Page 9: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/9.jpg)
Mayflower GmbH I 9
Application Bootstrap Bootstrapping von Plugin Resources
class My_Bootstrap_Resource_Request extends Zend_Application_Resource_ResourceAbstract{ public function init() { $this->getBootstrap()->bootstrap('FrontController'); $front = $this->getBootstrap() ->getResource('FrontController'); $request = new Zend_Controller_Request_Http(); // your code ... $front->setRequest($request); return $request; } }
![Page 10: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/10.jpg)
Mayflower GmbH I 10
Zend_Controller_Front
![Page 11: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/11.jpg)
Mayflower GmbH I 11
![Page 12: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/12.jpg)
Mayflower GmbH I 12
Zend_Controller_Front
I Setzt das Request Object ( Zend_Controller_Request_Http)
I Setzt das Response Object (Zend_Constroller_Response_Http)
I Setzt das Request- und Response-Object im Plugin Broker
· routeStartup()· routeShutdown()· dispatchLoopStartup()· preDispatch()· postDispatch()· dispatchLoopShutdown()
I Initialisiert die Router
I Initialisiert den Dispatcher
![Page 13: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/13.jpg)
Mayflower GmbH I 13
Eigene Front Controller Plugins
class My_Controller_Plugin_Request extends Zend_Controller_Plugin_Abstract{ public function dispatchLoopStartup( Zend_Controller_Request_Abstract $request) { $request->setModuleName('blog') ->setControllerName('entries') ->setActionName('index'); return $request; } }
![Page 14: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/14.jpg)
Mayflower GmbH I 14
Routing
![Page 15: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/15.jpg)
Mayflower GmbH I 15
I Verwendet standardmäßig den Rewrite-Router
· Zend_Controller_Router_Rewrite Verwendet die Module-Route zum erkennen der Anfrage
Beispiel
HTTP Request: http://mysite.com/user/authentication/login
Module-Route: module => user, controller => authentication, action => login
Routing
![Page 16: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/16.jpg)
Mayflower GmbH I 16
Routing
I Erlaubte Route-Typen
· Zend_Controller_Router_Route_Static· Zend_Controller_Router_Route_Regex· Zend_Controller_Router_Route_Hostname· Zend_Controller_Router_Route_Chain· Zend_Controller_Router_Route_Module
![Page 17: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/17.jpg)
Mayflower GmbH I 17
Dispatch
![Page 18: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/18.jpg)
Mayflower GmbH I 18
Dispatch Action Controller
Erstelle Instanz des Action Controllers
I Instanziere den Action Helper Broker
· Instanziere alle registrierten Action HelperRufe die init()-Methode der Action Helper auf
I Rufe die init() Methode des Action Controllers auf
I Gepufferte Ausgabe in den Response-Body schreiben
![Page 19: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/19.jpg)
Mayflower GmbH I 19
Die Action und ihre Helper
![Page 20: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/20.jpg)
Mayflower GmbH I 20
Controller Dispatch
I Ausgabe puffern (ob_start())
I Rufe die dispatch()-Methode des Action Controllers auf
· ActionHelper::preDispatch()· Controller::preDispatch()· myAction()· Controller::postDispatch()· ActionHelper::postDispatch()
![Page 21: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/21.jpg)
Mayflower GmbH I 21
Action Helper
I Der Helper muss abgeleitet sein von Zend_Controller_Action_Helper_Abstract
I Hinzufügen von Helper/Prefixen/Pfaden:
· addHelper()· addPrefix()· addPath()
![Page 22: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/22.jpg)
Mayflower GmbH I 22
Action Helper
class My_Controller_Action_Helper_Credentials extends Zend_Controller_Action_Helper_Abstract{ protected $_columns = array();
public function init() { $this->_columns = array('username', 'password'); }
public function get() { // retrieve the credentials map return $this->_columns; }}
![Page 23: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/23.jpg)
Mayflower GmbH I 23
Action Controller
class User_AuthenticationController extends Zend_Controller_Action{ public function init() { Zend_Controller_Action_HelperBroker ::addPrefix('My_Controller_Action_Helper'); } public function loginAction() { $credentialColumns = $this->_helper->Credentials->get(); $this->view->assign('credentialColumns', $credentialColumns); } }
![Page 24: Request Lifecycle im Zend Framework](https://reader030.fdocuments.in/reader030/viewer/2022020207/559470831a28aba00e8b46d2/html5/thumbnails/24.jpg)
07.07.11 Mayflower GmbH 25
Vielen Dank für Ihre Aufmerksamkeit!
Kontakt Markus Handschuh
+49 89 242054 1130
Mayflower GmbH
Mannhardtstrasse6
80538 München