index.phpZend\ServiceManager\ServiceManagerSTARTEventManagerZend\Mvc\Service\EventMnagerFactoryModuleManagerZend\Mvc\Service\EventMnagerFactorySharedEventManagerZend\EventManager\ShareEventManagerServiceManagerConfiguration Zend\ModuleManagr\ModuleManagerZend\Loader\ModuleAutoloaderZend\ModuleManagerListener\ModuleResoverListenerloadModulesloadModule.resolveloadModules.postInvokablesFactoriesDispatchListenerZend\Mvc\DispatchListenr$defaultServiceConfiguration Module EventsDefaultListenerAggregateApplicationZend\Mvc\Service\ApplictionFactoryZend\ModuleManage\Listener\AutoloaderListenerZend\ModuleManagerListener\InitTriggerZend\ModuleManagerListener\OnBootstrapListenerZend\ModuleManage\Listener\LocatorReistrationListenerZend\ModuleManage\Listener\ConfigListenerRequestZend\Http\PhpEnvironmet\RequestZend\Mvc\Application::init()InvokablesFactoriesModuleEventonloadModulesPre()onloadModulesPost()register()__invoke()onLoadModule()__invoke()__invoke()__invoke()onLoadModule()loadModulelöst aus inloadModules()und loadModule()bindet Listenerin createService()Stellt sicher, dass dieKlasse Module automatischgeladen werden kann.Instanziert die Module.phpbasiert auf ZF2 Beta 5(c) 2012 Michael Romer http://zendframework2.de/cheat-sheet.htmlFeedback? zf2buch@michael-romer.deRuft die MethodegetAutoloaderConfig() inder Module.php auf.Ruft die Methode init() inder Module.php auf.Sorgt dafür, dass die MethodeonBootstrap() in der Module.php fürden Event "bootstrap" derApplication registiriert wird Stellt sicher, dass alle Modul-Klassen, die dasLocatorRegisteredInterface implementieren, im ServiceManager verfügbargemacht werdenonLoadModulesPost()Ruft die MethodegetConfig() derModul-Klasse auf undvereinigt alleKonfigurationen.erzeugterzeugtZend\ModuleManagerListener\ServiceListeeronLoadModulesPost()onLoadModule()Ruft ggf. die Methoden getServiceConfiguration(),getControllerConfiguration(),getControllerPluginConfiguration(),getViewHelperConfiguration() in der Module.php auf,verarbeitet die zusammengeführten Configs und konfiguriertdamit die ServiceManager und ergänzt den ServiceManager umweitere Services. ResponseZend\Http\PhpEnvironmet\ResponseRouteListenerZend\Mvc\RouteListenerViewManagerZend\Mvc\View\ViewMangerConfigurationZend\Mvc\Service\ConfigrationFactoryDependencyInjectorZend\Mvc\Service\DiFactryRouterZend\Mvc\Service\RouteractoryViewFeedRendererZend\Mvc\Service\ViewFedRendererFactoryViewFeedStrategyZend\Mvc\Service\ViewFedStrategyFactoryViewJsonRendererZend\Mvc\Service\ViewJsnRendererFactoryViewJsonStrategyZend\Mvc\Service\ViewJsnStrategyFactoryViewHelperManagerZend\Mvc\Service\ViewHlperManagerFactoryControllerPluginMangerZend\Mvc\Service\ControlerPluginManagerFactoryControllerLoaderZend\Mvc\Service\ControlerLoaderFactoryScoped ServiceManagerbootstraproutedispatch.errorMVC EventsMvcEventdispatchonRoute()Ruft den Router auf, der versucht, einepassende Route für die aufgerufene URL zuermitteln. onDispatch()Instanziert mithilfe des ContollerLoader denim Rahmen des Routings ermitteltenController.onBootstrap()löst aus in run()Bereitet den View Layer vor.renderfinishZend\Mvc\ApplicatinControllerabgeleitet von:Zend\Mvc\Controller\AbtractActionControllerdispatchlöst ausexecute()registriert in onBootstrap()RouteNotFoundStrateyZend\Mvc\View\RouteNotoundStrategieServicesSetzt den Statuscode auf 404, falls keine passendeRoute ermittelt oder kein Controller ermitteltwerden konnen und erzeugt ggf. ein speziellesViewModel für die "File-Not-Found" - Seite. prepareNotFoundViewModel()detectNotFoundError()prepareNotFoundViewModel()ExceptionStrategyZend\Mvc\View\ExceptioStrategybindet listener inbootstrap()prepareExceptionViewModel()Setzt den Statuscode auf 500, falls im MVC-Eventein Error vom Typ Application::ERROR_EXCEPTIONzu finden ist und erzeugt ein spezielles ViewModelfür die "Application Error" - Seite. DefaultRenderingStraegyZend\Mvc\View\DefaultRederingStrategyrender()Stößt das Rendering der View an.ENDEZend\Mvc\View\CreatViewModelListenerZend\Mvc\View\InjectTemplateListeneZend\Mvc\View\InjecViewModelListenerbindet Listener in onBootstrap()send()createViewModelFromArray()createViewModelFromNull()Stellt sicher, dass ein Objekt vom Typ"ViewModel" für das rendering bereitsteht.injectTemplate()Stellt sicher, dass ein Objekt vom Typ"ViewModel" für das rendering bereitsteht.Fügt das passende Template für dasRendering in das ViewModel hinzu.injectViewModel()Fügt das ViewModel dem MVC-Event hinzu.injectViewModel()ViewZend\View\ViewrendererresponseViewEventViewPhpRendererStraegyZend\View\Strategy\PhpRndererStrategyselectRenderer()injectResponse()Wählt den zu verwendenen Renderer und überträgt das Ergebnis des Rederingsvon der View in das Response-Objekt.ViewRendererZend\View\Renderer\PhpendererViewTemplateMapReolverZend\View\Resolver\ViewemplateMapResolverViewTemplatePathStakZend\View\Resolver\ViewemplatePathStackViewResolverZend\View\Resolver\AggrgateResolverFindet den Pfad zu einem Template auf Basis eineszuvor festgelegten Keys in einer Key-ValueDatenstruktur.Findet den Pfad zu einem Template auf Basis eineszuvor festgelegten Stacks vom Pfaden.Aggregiert ViewTemplateMapResolver &ViewTemplatePathStackZend Framework 2 Request Dispatch FlowÜberblick Ablauf Request-Verarbeitung1. Request wird auf index.php umgeschrieben2. index.php: 2.1 Autoloading konfigurieren2.2 application.config.php einlesen 2.3Zend\Mvc\Application::init() aufrufen, dabei Configübergeben3. Zend\Mvc\Application::init() 3.1 initialisiert den ServiceManager3.2 legt Inhalte der application.config.php als Service ab3.3 fordert beim ServiceManager den ModuleManager anund ruft dessen loadModules() - Methode auf3.4 fordert dann beim ServiceManager die Application anund ruft dessen bootstrap() - Methode auf4. index.php: 4.1 ruft Methode run() der Application auf4.2 ruft Methode send() der Application aufEinsprungpunkt für alle Requests durchEinsatz von mod_rewrite und ggf. .htaccess -File.Repräsentiert die gesamte Anwendung und istEinsprungspunkt ins Zend Framework. Bietetdie Klassenmethode init() zur Erzeugungeiniger Basisdienste.Verwaltet die Services der Anwendung.Ermöglicht die Registrierung von Listenernfür Events, wenn der eigentlich zuständigeEventManager noch nicht verfügbar ist.Verwaltet die Module derAnwendung.Erzeugt einen Service, derZugriff auf die vereinteKonfiguration bietet. Ermöglicht es einem anderen Objekte,Ereignisse auszulösen und Listener zuverwalten.ApplicationConfigurationarrayInhalt der application.config.phpServiceIdentifiersSharedEventManager:- ModuleManager- module_manager- Zend\ModuleManager\ModuleManagerIdentifiersSharedEventManager:- application- Zend\Mvc\ApplicationErzeut den ViewHelperManager, derViewHelper zur Nutzung bereitstellt.Erzeut den ControllerPluginmanager,der Controller Plugins zur Nutzungbereitstellt.Erzeut den ControllerLoader, der dieController der Anwendungbereitstellt.Diese Services stellen selbstwieder spezialisierteServiceManager dar.IdentifiersSharedEventManager:- Zend\Stdlib\DispatchableInterface-Zend\Mvc\Controller\AbstractActionController- der erste Teil desNamespaces des ControllersErzeugt aus Templates und ViewModelfinales Markup.Repräsentiert die visuelle Darstellung. create and share your own diagrams at gliffy.com