SlideShare ist ein Scribd-Unternehmen logo
Request Lifecycle im
Zend Framework

Markus Handschuh I 31.03.2011




                                © Mayflower GmbH 2010
Agenda



I Application Bootstrap
   · Resources
I Zend_Controller_Front
   · Plugins
I Routing
I Dispatcher
I Die Action und ihre Helper




                               Mayflower GmbH I 2
Application Bootstrap




                        Mayflower GmbH I 3
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();




                                                    Mayflower GmbH I 4
Application Bootstrap




I Bootstrapping von Class Resources


I Bootstrapping von Plugin Resources


I Run Zend_Controller_Front->dispatch()




                                          Mayflower GmbH I 5
Application Bootstrap
Bootstrapping von Class Resources


I Methoden müssen protected sein..
   ·… und mit _init vorangestellt sein


Beispiel
protected function _initLog() {}




                                         Mayflower GmbH I 6
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;
    }
}


                                                               Mayflower GmbH I 7
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


Beispiel
class My_Resource_Test
    extends Zend_Application_Resource_ResourceAbstract {}




                                                            Mayflower GmbH I 8
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;
    }

}

                                                               Mayflower GmbH I 9
Zend_Controller_Front




                        Mayflower GmbH I 10
Mayflower GmbH I 11
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


                                                             Mayflower GmbH I 12
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;
    }

}




                                                             Mayflower GmbH I 13
Routing




          Mayflower GmbH I 14
Routing



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




                                                              Mayflower GmbH I 15
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




                                             Mayflower GmbH I 16
Dispatch




           Mayflower GmbH I 17
Dispatch Action Controller



Erstelle Instanz des Action Controllers


I Instanziere den Action Helper Broker
   ·  Instanziere alle registrierten Action Helper
        Rufe die init()-Methode der Action Helper auf

I Rufe die init() Methode des Action Controllers auf


I Gepufferte Ausgabe in den Response-Body schreiben




                                                         Mayflower GmbH I 18
Die Action und
  ihre Helper




                 Mayflower GmbH I 19
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()




                                                           Mayflower GmbH I 20
Action Helper



I Der Helper muss abgeleitet sein von
 Zend_Controller_Action_Helper_Abstract



I Hinzufügen von Helper/Prefixen/Pfaden:
   · addHelper()
   · addPrefix()
   · addPath()




                                           Mayflower GmbH I 21
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;
    }
}


                                                     Mayflower GmbH I 22
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);
    }

}

                                                             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ünchen


07.07.11                              Mayflower GmbH   25

Weitere ähnliche Inhalte

PDF
Symfony2
PDF
IPC 2015 Zend Framework 3 Reloaded
PDF
Mobile Anwendungen mit SenchaTouch
PDF
Zend Framework 1 + Doctrine 2
PDF
ReST Vs SOA(P) ... Yawn
PPT
Web of Science: REST or SOAP?
ODP
Application development using Zend Framework
PDF
Infizierter Shop. Eine Magento Case Study
Symfony2
IPC 2015 Zend Framework 3 Reloaded
Mobile Anwendungen mit SenchaTouch
Zend Framework 1 + Doctrine 2
ReST Vs SOA(P) ... Yawn
Web of Science: REST or SOAP?
Application development using Zend Framework
Infizierter Shop. Eine Magento Case Study

Ähnlich wie Request Lifecycle im Zend Framework (15)

ODP
Präsentation webservices
PPT
PDF
Der neue Component Router für Angular 2
PDF
PHP-Module in statischen Seiten - Architektur-Ansätze
PPTX
PHP-SEO Vortrag SEOCampixx 2013 von Sebastian Blum
PDF
Slides__Splunk_UserGroup_20220407.pdf
PDF
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
PDF
Web APIs mit ASP.NET MVC Core 1
ODP
Modulsystem in Drupal
PPTX
MVVM mit WPF
PDF
JS Best Practises Debugging und Logging
PDF
APIs mit Zend\Expressive erstellen
ODP
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
KEY
Die Kunst Des Software Design
PDF
Stored Procedures in MySQL
Präsentation webservices
Der neue Component Router für Angular 2
PHP-Module in statischen Seiten - Architektur-Ansätze
PHP-SEO Vortrag SEOCampixx 2013 von Sebastian Blum
Slides__Splunk_UserGroup_20220407.pdf
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
Web APIs mit ASP.NET MVC Core 1
Modulsystem in Drupal
MVVM mit WPF
JS Best Practises Debugging und Logging
APIs mit Zend\Expressive erstellen
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
Die Kunst Des Software Design
Stored Procedures in MySQL
Anzeige

Mehr von Mayflower GmbH (20)

PDF
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
PDF
Why and what is go
PDF
Agile Anti-Patterns
PDF
JavaScript Days 2015: Security
PDF
Vom Entwickler zur Führungskraft
PPTX
Produktive teams
PDF
Salt and pepper — native code in the browser Browser using Google native Client
PDF
Plugging holes — javascript memory leak debugging
PDF
Usability im web
PDF
Rewrites überleben
PDF
JavaScript Security
PDF
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
PDF
Responsive Webdesign
PDF
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
PDF
Pair Programming Mythbusters
PDF
Shoeism - Frau im Glück
PDF
Bessere Software schneller liefern
PDF
Von 0 auf 100 in 2 Sprints
PDF
Piwik anpassen und skalieren
PDF
Agilitaet im E-Commerce - E-Commerce Breakfast
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Why and what is go
Agile Anti-Patterns
JavaScript Days 2015: Security
Vom Entwickler zur Führungskraft
Produktive teams
Salt and pepper — native code in the browser Browser using Google native Client
Plugging holes — javascript memory leak debugging
Usability im web
Rewrites überleben
JavaScript Security
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
Responsive Webdesign
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Pair Programming Mythbusters
Shoeism - Frau im Glück
Bessere Software schneller liefern
Von 0 auf 100 in 2 Sprints
Piwik anpassen und skalieren
Agilitaet im E-Commerce - E-Commerce Breakfast
Anzeige

Request Lifecycle im Zend Framework

  • 1. Request Lifecycle im Zend Framework Markus Handschuh I 31.03.2011 © Mayflower GmbH 2010
  • 2. Agenda I Application Bootstrap · Resources I Zend_Controller_Front · Plugins I Routing I Dispatcher I Die Action und ihre Helper Mayflower GmbH I 2
  • 3. Application Bootstrap Mayflower GmbH I 3
  • 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(); Mayflower GmbH I 4
  • 5. Application Bootstrap I Bootstrapping von Class Resources I Bootstrapping von Plugin Resources I Run Zend_Controller_Front->dispatch() Mayflower GmbH I 5
  • 6. Application Bootstrap Bootstrapping von Class Resources I Methoden müssen protected sein.. ·… und mit _init vorangestellt sein Beispiel protected function _initLog() {} Mayflower GmbH I 6
  • 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; } } Mayflower GmbH I 7
  • 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 Beispiel class My_Resource_Test extends Zend_Application_Resource_ResourceAbstract {} Mayflower GmbH I 8
  • 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; } } Mayflower GmbH I 9
  • 10. Zend_Controller_Front Mayflower GmbH I 10
  • 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 Mayflower GmbH I 12
  • 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; } } Mayflower GmbH I 13
  • 14. Routing Mayflower GmbH I 14
  • 15. Routing 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 Mayflower GmbH I 15
  • 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 Mayflower GmbH I 16
  • 17. Dispatch Mayflower GmbH I 17
  • 18. Dispatch Action Controller Erstelle Instanz des Action Controllers I Instanziere den Action Helper Broker · Instanziere alle registrierten Action Helper Rufe die init()-Methode der Action Helper auf I Rufe die init() Methode des Action Controllers auf I Gepufferte Ausgabe in den Response-Body schreiben Mayflower GmbH I 18
  • 19. Die Action und ihre Helper Mayflower GmbH I 19
  • 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() Mayflower GmbH I 20
  • 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() Mayflower GmbH I 21
  • 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; } } Mayflower GmbH I 22
  • 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); } } Mayflower GmbH I 23
  • 24. Vielen Dank für Ihre Aufmerksamkeit! Kontakt Markus Handschuh [email protected] +49 89 242054 1130 Mayflower GmbH Mannhardtstrasse6 80538 München 07.07.11 Mayflower GmbH 25