Zend Framework 2 Cheat Sheet
basiert auf: ZF 2 Beta 5
WORK IN PROGRESS!
(c) 2012 Michael Romer (
Impressum )
index.php Zend \ ServiceManager \ ServiceManager START EventManager Zend \ Mvc \ Service \ EventM nagerFactory ModuleManager Zend \ Mvc \ Service \ EventM nagerFactory SharedEventManager Zend \ EventManager \ Share EventManager ServiceManagerConfiguration Zend \ ModuleManag r\ M oduleManager Zend \ Loader \ ModuleAutoloader Zend \ ModuleManager L istener\ M oduleReso verListener loadModules loadModule.resolve loadModules.post Invokables Factories DispatchListener Zend \ Mvc \ DispatchListen r $defaultServiceConfiguration Module Events DefaultListenerAggregate Application Zend \ Mvc \ Service \ Applic tionFactory Zend \ ModuleManage \ L istener\ AutoloaderListener Zend \ ModuleManager L istener\ InitTrigger Zend \ ModuleManager L istener\ OnBootstrapListener Zend \ ModuleManage \ L istener\ L ocatorRe istrationListener Zend \ ModuleManage \ L istener\ ConfigListener Request Zend \ Http \ PhpEnvironme t\ R equest Zend \ Mvc \ Application:: init() Invokables Factories ModuleEvent onloadModulesPre() onloadModulesPost() register() __invoke() onLoadModule() __invoke() __invoke() __invoke() onLoadModule() loadModule löst aus in loadModules() und loadModule() bindet Listener in createService() Stellt sicher, dass die Klasse Module automatisch geladen werden kann. Instanziert die Module.php basiert auf ZF2 Beta 5 (c) 2012 Michael Romer http://zendframework2.de/cheat-sheet.html Feedback? zf2buch@michael-romer.de Ruft die Methode getAutoloaderConfig() in der Module.php auf. Ruft die Methode init() in der Module.php auf. Sorgt dafür, dass die Methode onBootstrap() in der Module.php für den Event "b o otstrap" d er Application registiriert wird Stellt sicher, dass alle Modul-Klassen, die das LocatorRegisteredInterface implementieren, im ServiceManager verfügbar gemacht werden onLoadModulesPost() Ruft die Methode getConfig() der Modul-Klasse auf und vereinigt alle Konfigurationen. er zeugt erzeugt Zend \ ModuleManager L istener\ S erviceListe er onLoadModulesPost() onLoadModule() Ruft ggf. die Methoden getServiceConfiguration(), getControllerConfiguration(), getControllerPluginConfiguration(), getViewHelperConfiguration() in der Module.php auf, verarbeitet die zusammengeführten Configs und konfiguriert damit die ServiceManager und ergänzt den ServiceManager um weitere Services. Response Z end\ H ttp\ P hpEnvironme t\R e sponse RouteListener Z end\ M vc\ R outeListener ViewManager Z end\ M vc\ V iew\ V iewMan ger Configuration Zend \ Mvc \ Service \ Config rationFactory DependencyInjector Zend \ Mvc \ Service \ DiFact ry Router Zend \ Mvc \ Service \ Router actory ViewFeedRenderer Zend \ Mvc \ Service \ ViewFe dRendererFactory ViewFeedStrategy Zend \ Mvc \ Service \ ViewFe dStrategyFactory ViewJsonRenderer Zend \ Mvc \ Service \ ViewJs nRendererFactory ViewJsonStrategy Zend \ Mvc \ Service \ ViewJs nStrategyFactory ViewHelperManager Zend \ Mvc \ Service \ ViewH lperManagerFactory ControllerPluginMan ger Zend \ Mvc \ Service \ Contro lerPluginManagerFactory Co ntrollerLoader Zend \ Mvc \ Service \ Contro lerLoaderFactory Scoped ServiceManager bootstrap route dispatch.error MVC Events MvcEvent dispatch onRoute() Ruft den Router auf, der versucht, eine passende Route für die aufgerufene URL zu ermitteln. onDispatch() Instanziert mithilfe des ContollerLoader den im Rahmen des Routings ermittelten Controller. onBootstrap() löst aus in run() Bereitet den View Layer vor. render finish Zend \ Mvc \ Applicati n Controller abgeleitet von: Zend \ Mvc \ Controller \ Ab tractActionController dispatch löst aus execute() registriert in onBootstrap() RouteNotFoundStrate y Zend \ Mvc \ View \ Rout eNot oundStrategie Services Setzt den Statuscode auf 404, falls keine passende Route ermittelt oder kein Controller ermittelt werden konnen und erzeugt ggf. ein spezielles ViewModel für die "Fi l e-Not-Found" - Seite. prepareNotFoundViewModel() detectNotFoundError() prepareNotFoundViewModel() ExceptionStrategy Zend \ Mvc \ View \ Exceptio Strategy bindet listener in bootstrap() prepareExceptionViewModel() Setzt den Statuscode auf 500, falls im MVC-Event ein Error vom Typ Application::ERROR_EXCEPTION zu finden ist und erzeugt ein spezielles ViewModel für die "Ap p lication Error" - Seite. DefaultRenderingStra egy Zend \ Mvc \ View \ DefaultRe deringStrategy render() Stößt das Rendering der View an. ENDE Zend \ Mvc \ View \ Creat ViewModelListener Zend \ Mvc \ View \ InjectTemplateListene Zend \ Mvc \ View \ Injec ViewModelListener bindet Listener in onBootstrap() send() createViewMo delFromArray() createViewModelFromNull() Stellt sicher, dass ein Objekt vom Typ " V iewModel" für das rendering bereitsteht. injectTemplate() Stellt sicher, dass ein Objekt vom Typ " V iewModel" für das rendering bereitsteht. Fügt das passende Template für das Rendering in das ViewModel hinzu. injectViewModel() Fügt das ViewModel dem MVC-Event hinzu. injectViewModel() View Zend \ View \ View renderer response ViewEvent ViewPhpRendererStra egy Zend \ View \ Strategy \ PhpR ndererStrategy selectRenderer() injectResponse() Wählt den zu verwendenen Renderer und überträgt das Ergebnis des Rederings von der View in das Response-Objekt. ViewRenderer Zend \ View \ Renderer \ Php enderer ViewTemplateMapRe olver Zend \ View \ Resolver \ View emplateMapResolver ViewTemplatePathSta k Zend \ View \ Resolver \ View emplatePathStack ViewResolver Zend \ View \ Resolver \ Aggr gateResolver Findet den Pfad zu einem Template auf Basis eines zuvor festgelegten Keys in einer Key-Value Datenstruktur. Findet den Pfad zu einem Template auf Basis eines zuvor festgelegten Stacks vom Pfaden. Aggregiert ViewTemplateMapResolver & ViewTemplatePathStack Zend Framework 2 Request Dispatch Flow Überblick Ablauf Request-Verarbeitung 1. Request wird auf index.php umgeschrieben 2. index.php : 2.1 Autoloading konfigurieren 2.2 application.config.php einlesen 2.3 Zend \ Mvc \ Application::init() aufrufen, dabei Config übergeben 3. Zend \ Mvc \ Application::init() 3.1 initialisiert den ServiceManager 3.2 legt Inhalte der application.config.php als Service ab 3.3 fordert beim ServiceManager den ModuleManager an und ruft dessen loadModules() - Methode auf 3.4 fordert dann beim ServiceManager die Application an und ruft dessen bootstrap() - Methode auf 4. index.php: 4.1 ruft Methode run() der Application auf 4.2 ruft Methode send() der Application auf Einsprungpunkt für alle Requests durch Einsatz von mod_rewrite und ggf. .htaccess - File. Repräsentiert die gesamte Anwendung und ist Einsprungspunkt ins Zend Framework. Bietet die Klassenmethode init() zur Erzeugung einiger Basisdienste. Verwaltet die Services der Anwendung. Ermöglicht die Registrierung von Listenern für Events, wenn der eigentlich zuständige EventManager noch nicht verfügbar ist. Verwaltet die Module der Anwendung. Erzeugt einen Service, der Zugriff auf die vereinte Konfiguration bietet. Ermöglicht es einem anderen Objekte, Ereignisse auszulösen und Listener zu verwalten. ApplicationConfiguration array Inhalt der application.config.php Service Identifiers SharedEventManager: - ModuleManager - module_manager - Zend \ ModuleManager \ ModuleManager Identifiers SharedEventManager: - application - Zend \ Mvc \ Application Erzeut den ViewHelperManager, der ViewHelper zur Nutzung bereitstellt. Erzeut den ControllerPluginmanager, der Controller Plugins zur Nutzung bereitstellt. Erzeut den ControllerLoader, der die Controller der Anwendung bereitstellt. Diese Services stellen selbst wieder spezialisierte ServiceManager dar. Identifiers SharedEventManager: - Zend \ Stdlib \ DispatchableInterface -Zend \ Mvc \ Controller \ AbstractActionController - der erste Teil des Namespaces des Controllers Erzeugt aus Templates und ViewModel finales Markup. Repräsentiert die visuelle Darstellung. create and share your own diagrams at gliffy.com
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.
Download and unzip ZendFramework2
Install composer: curl -sS https://getcomposer.org/installer | php Composer successfully installed to: /var/www/newsite/ZendFramework/composer.phar Use it: php composer.phar
Update composer: php composer.phar self-update
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#
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
Create Project: php -f vendor/bin/zf.php create project performer ZF2 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
cd performer
composer.phar install
php -f ../vendor/bin/zf.php create module admin The module Admin has been created
mv performer ../
Set Document Root to /var/www/ newsite /performer/public
Skeleton application should now be shown, if not check apache error log.