Request Lifecycle im Zend Framework
Upcoming SlideShare
Loading in...5
×
 

Request Lifecycle im Zend Framework

on

  • 3,131 views

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 ...

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?

Statistics

Views

Total Views
3,131
Views on SlideShare
2,981
Embed Views
150

Actions

Likes
2
Downloads
20
Comments
0

3 Embeds 150

http://blog.mayflower.de 111
url_unknown 36
http://mortersheen.rssing.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Request Lifecycle im Zend Framework Request Lifecycle im Zend Framework Presentation Transcript

  • Request Lifecycle imZend FrameworkMarkus Handschuh I 31.03.2011 © Mayflower GmbH 2010
  • AgendaI Application Bootstrap · ResourcesI Zend_Controller_Front · PluginsI RoutingI DispatcherI Die Action und ihre Helper Mayflower GmbH I 2
  • Application Bootstrap Mayflower GmbH I 3
  • 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
  • Application BootstrapI Bootstrapping von Class ResourcesI Bootstrapping von Plugin ResourcesI Run Zend_Controller_Front->dispatch() Mayflower GmbH I 5
  • Application BootstrapBootstrapping von Class ResourcesI Methoden müssen protected sein.. ·… und mit _init vorangestellt seinBeispielprotected function _initLog() {} Mayflower GmbH I 6
  • 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
  • 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
  • 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
  • Zend_Controller_Front Mayflower GmbH I 10
  • Mayflower GmbH I 11
  • 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
  • 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
  • Routing Mayflower GmbH I 14
  • 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
  • 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
  • Dispatch Mayflower GmbH I 17
  • 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
  • Die Action und ihre Helper Mayflower GmbH I 19
  • 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
  • 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
  • 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
  • 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
  • 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