Request Lifecycle im Zend Framework

3,845 views

Published on

Der Vortrag erklärt den Weg vom HTTP-Request bis zur fertigen Action und was dazwischen passiert. Auszug aus den Inhalten: Wo kann man den Bootstrap manipulieren und erweitern? Welche Möglichkeiten gibt es, sich in den Dispatch einzuhängen?

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,845
On SlideShare
0
From Embeds
0
Number of Embeds
163
Actions
Shares
0
Downloads
29
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Request Lifecycle im Zend Framework

  1. 1. Request Lifecycle imZend FrameworkMarkus Handschuh I 31.03.2011 © Mayflower GmbH 2010
  2. 2. AgendaI Application Bootstrap · ResourcesI Zend_Controller_Front · PluginsI RoutingI DispatcherI Die Action und ihre Helper Mayflower GmbH I 2
  3. 3. Application Bootstrap Mayflower GmbH I 3
  4. 4. Application Bootstrapindex.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(); Mayflower GmbH I 4
  5. 5. Application BootstrapI Bootstrapping von Class ResourcesI Bootstrapping von Plugin ResourcesI Run Zend_Controller_Front->dispatch() Mayflower GmbH I 5
  6. 6. Application BootstrapBootstrapping von Class ResourcesI Methoden müssen protected sein.. ·… und mit _init vorangestellt seinBeispielprotected function _initLog() {} Mayflower GmbH I 6
  7. 7. Application BootstrapBootstrapping von Class Resourcesclass 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; }} Mayflower GmbH I 7
  8. 8. Application BootstrapBootstrapping von Plugin ResourcesI Die Klasse muss abgeleitet sein von Zend_Application_Resource_ResourceAbstractI Die Klasse muss eine init()-Methode implementierenBeispielclass My_Resource_Test extends Zend_Application_Resource_ResourceAbstract {} Mayflower GmbH I 8
  9. 9. Application BootstrapBootstrapping von Plugin Resourcesclass 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; }} Mayflower GmbH I 9
  10. 10. Zend_Controller_Front Mayflower GmbH I 10
  11. 11. Mayflower GmbH I 11
  12. 12. Zend_Controller_FrontI 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 RouterI Initialisiert den Dispatcher Mayflower GmbH I 12
  13. 13. Eigene Front Controller Pluginsclass 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; }} Mayflower GmbH I 13
  14. 14. Routing Mayflower GmbH I 14
  15. 15. RoutingI Verwendet standardmäßig den Rewrite-Router · Zend_Controller_Router_Rewrite  Verwendet die Module-Route zum erkennen der AnfrageBeispielHTTP Request: http://mysite.com/user/authentication/loginModule-Route: module => user, controller => authentication, action => login Mayflower GmbH I 15
  16. 16. RoutingI 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 Mayflower GmbH I 16
  17. 17. Dispatch Mayflower GmbH I 17
  18. 18. Dispatch Action ControllerErstelle Instanz des Action ControllersI Instanziere den Action Helper Broker · Instanziere alle registrierten Action Helper Rufe die init()-Methode der Action Helper aufI Rufe die init() Methode des Action Controllers aufI Gepufferte Ausgabe in den Response-Body schreiben Mayflower GmbH I 18
  19. 19. Die Action und ihre Helper Mayflower GmbH I 19
  20. 20. Controller DispatchI Ausgabe puffern (ob_start())I Rufe die dispatch()-Methode des Action Controllers auf · ActionHelper::preDispatch() · Controller::preDispatch() · myAction() · Controller::postDispatch() · ActionHelper::postDispatch() Mayflower GmbH I 20
  21. 21. Action HelperI Der Helper muss abgeleitet sein von Zend_Controller_Action_Helper_AbstractI Hinzufügen von Helper/Prefixen/Pfaden: · addHelper() · addPrefix() · addPath() Mayflower GmbH I 21
  22. 22. Action Helperclass 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; }} Mayflower GmbH I 22
  23. 23. Action Controllerclass 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); }} Mayflower GmbH I 23
  24. 24. Vielen Dank für Ihre Aufmerksamkeit! Kontakt Markus Handschuh markus.handschuh@mayflower.de +49 89 242054 1130 Mayflower GmbH Mannhardtstrasse6 80538 München07.07.11 Mayflower GmbH 25

×