Tuesday, 7 January 2014


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

Monday, 6 January 2014

Zend Framework 2 configuration.

module/[module]/Module.php

  • What is it?
    Zend Framework 2 has a ModuleManager. This will look for Module.php in the root of the module directory (module/[module]) and expect to find a class called [module]\Module (see below) within it. That is, the classes within a given module will have the namespace of the module’s name, which is the directory name of the module.
  • Why do we need it?
    This is how Zend Framework 2 discoveres the configuration for a module.

module/[module]/config/Module.config.php

  • What is it?
    This is a configuration file for the module referenced from Module.php above.
    The config information is passed to the relevant components by the ServiceManager. We need two initial sections: controllers and view_manager.
  • Why do we need it?
    It holds the modules configuration. The controllers section provides a list of all the controllers provided by the module.

 config/application.config.php


  • What is it?
    This file holds the applications configuration, lists the different modules.

Getting Started With ZendFramework2

  1. Download and unzip ZendFramework2
  2. Install composer: curl -sS https://getcomposer.org/installer | php
    Composer successfully installed to: /var/www/newsite/ZendFramework/composer.phar
    Use it: php composer.phar
  3. Update composer: php composer.phar self-update
  4. Install composer: php composer.phar install
    root@lamp newsite/ZendFramework# php composer.phar install
    Loading composer repositories with package information
    Installing dependencies (including require-dev)
      - Installing ircmaxell/security-lib (dev-master d63da10)
        Cloning d63da10d863b819289059de850c920b1cd98204d

      - Installing ircmaxell/random-lib (dev-master bfbe6a7)
        Cloning bfbe6a730f368979a98c636d1aa16c868111a2b1

      - Installing doctrine/lexer (v1.0)
        Downloading: 100%

      - Installing doctrine/annotations (v1.1.2)
        Downloading: 100%

      - Installing backplane/zendframework (2.2.5)
        Downloading: 100%

      - Installing ocramius/proxy-manager (0.4.1)
        Downloading: 100%

      - Installing sebastian/diff (1.1.0)
        Downloading: 100%

      - Installing symfony/finder (v2.4.1)
        Downloading: 100%

      - Installing symfony/filesystem (v2.4.1)
        Downloading: 100%

      - Installing symfony/console (v2.4.1)
        Downloading: 100%

      - Installing fabpot/php-cs-fixer (dev-master c644477)
        Cloning c644477c7f16396613a9b5d702217e4aaa1b21ad

      - Installing symfony/yaml (v2.4.1)
        Downloading: 100%

      - Installing phpunit/php-text-template (1.1.4)
        Downloading: 100%

      - Installing phpunit/phpunit-mock-objects (1.2.3)
        Downloading: 100%

      - Installing phpunit/php-timer (1.0.5)
        Downloading: 100%

      - Installing phpunit/php-token-stream (1.2.1)
        Downloading: 100%

      - Installing phpunit/php-file-iterator (1.3.4)
        Downloading: 100%

      - Installing phpunit/php-code-coverage (1.2.13)
        Downloading: 100%

      - Installing phpunit/phpunit (3.7.28)
        Downloading: 100%

    backplane/zendframework suggests installing ext-intl (ext/intl for i18n features (included in default builds of PHP))
    backplane/zendframework suggests installing zendframework/zendpdf (ZendPdf for creating PDF representations of barcodes)
    backplane/zendframework suggests installing zendframework/zendservice-recaptcha (ZendService\ReCaptcha for rendering ReCaptchas in Zend\Captcha and/or Zend\Form)
    symfony/console suggests installing symfony/event-dispatcher ()
    phpunit/php-code-coverage suggests installing ext-xdebug (>=2.0.5)
    phpunit/phpunit suggests installing phpunit/php-invoker (>=1.1.0,<1.2.0)
    Writing lock file
    Generating autoload files
    root@lamp newsite/ZendFramework#
  5. Install the ZFtool: php composer.phar require zendframework/zftool:dev-master
    root@lamp newsite/ZendFramework# php composer.phar require zendframework/zftool:dev-master
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
      - Installing zendframework/zftool (dev-master d73bf6f)
        Cloning d73bf6f0ae6ce9b92acc72ecc8f336e2352f3ae0

    Writing lock file
    Generating autoload files
  6. Create Project: php -f vendor/bin/zf.php create project performerZF2 skeleton application installed in performer.
    In order to execute the skeleton application you need to install the ZF2 library.
    Execute: "composer.phar install" in performer
    For more info in performer/README.md
  7. cd performer
  8. composer.phar install
  9. php -f ../vendor/bin/zf.php create module adminThe module Admin has been created
  10. mv performer ../
  11. Set Document Root to /var/www/newsite/performer/public
Skeleton application should now be shown, if not check apache error log.