Upload
ralf-eggert
View
1.515
Download
1
Embed Size (px)
DESCRIPTION
Vortrag auf der PHP Unconference 2012 in Hamburg am 18.8.2012
Citation preview
18./19.08.2012 6. PHP Unconference in Hamburg 1 von 24
Zend Framework 2
6. PHP Unconference, Hamburg18. und 19. August 2012
Zend Framework 2 kommt bald - und jetzt?
18./19.08.2012 6. PHP Unconference in Hamburg 2 von 24
Zend Framework 2
Wer sind wir?● Ralf Eggert
● Geschäftsführer Travello GmbH
● PHP seit 1999
● Zend Framework seit 2006
● Autor für PHP Magazin, seit 2007 Zend_Column
● Buchautor, Addison-Wesley, Neuauflage 2013
● www.zendframeworkmagazin.de => sucht Autoren
● Tobias Ranft
● Detlev Louis Motorradvertriebs GmbH
● Webentwickler seit 2000
● Zend Framework seit 2010
● www.louis.de => sucht ZF Freelancer
18./19.08.2012 6. PHP Unconference in Hamburg 3 von 24
Zend Framework 2
TEIL 1
die Neuerungen
18./19.08.2012 6. PHP Unconference in Hamburg 4 von 24
Zend Framework 2
Was interessiert mich mein Geschwätz von gestern?
18./19.08.2012 6. PHP Unconference in Hamburg 5 von 24
Zend Framework 2
Neue Konzepte im ZF2 (I)● PHP Namespaces
– Zend\Form\Element statt Zend_Form_Element
– namespace Zend\Authentication\Adapter;
– use Zend\Authentication\Result as AuthenticationResult;use Zend\Db\Adapter\Adapter as DbAdapter;use Zend\Db\ResultSet\ResultSet;use Zend\Db\Sql\Expression;use Zend\Db\Sql\Select as DbSelect;
– use Zend\InputFilter\Factory as InputFactory;
18./19.08.2012 6. PHP Unconference in Hamburg 6 von 24
Zend Framework 2
Neue Konzepte im ZF2 (II)● Neue Modularität
– Zend\ModuleManager
– Alles ist ein Modul
– Module in /module und /vendor
– Einfache Aktivierung
● Dependency Injection– Zend\Di
– Steuerung der Abhängigkeiten von Objekten
– $b = new MovieLister(new MovieFinder));
– MovieLister ist abhängig von MovieFinder
– MovieFinder wird in MovieLister injiziert
18./19.08.2012 6. PHP Unconference in Hamburg 7 von 24
Zend Framework 2
Neue Konzepte im ZF2 (III)● Service Locator
– Zend\ServiceManager
– Zentrale Registrierung für Objekte zur späteren Wiederverwendung
– Ersetzt Zend_Registry
● Event-Driven Architecture– Zend\EventManager
– Anhängen und Abhängen von Listenern an benannte Events
– Events werden angestoßen
– Plugin Hooks sind als Events realisiert
– Klassische Beispiele: Logging oder Versand von Bestellbestätigungen
18./19.08.2012 6. PHP Unconference in Hamburg 8 von 24
Zend Framework 2
Neue Konzepte im ZF2 (IV)● Neuer Autoloader
– Zend\Loader
– Class Map
– PSR-0 style autoloader
– Plugin Loader
– Prefix Path Loader
● Standardisierte Konfiguration– Einheitliche Optionen: lowercase_underscore_separated_words
– setOptions() für alle Komponenten einheitlich
– Eigene Konfigurationsobjekte pro Komponente
– Zend\Stdlib\AbstractOptions
18./19.08.2012 6. PHP Unconference in Hamburg 9 von 24
Zend Framework 2
Neue Konzepte im ZF2 (V)● Annotations
namespace MyVendor\Model;
use Zend\Form\Annotation;
/** * @Annotation\Hydrator("Zend\Stdlib\Hydrator\ObjectProperty") * @Annotation\Name("user") */class User{ /** * @Annotation\Attributes({"type":"text" }) * @Annotation\Validator({"type":"Regex","options":{"regex":"/^[a-zA-Z][a-zA-Z0-9_-]{1,19}/"}}) * @Annotation\Options({"label":"Username:"}) */ public $username;
/** * @Annotation\Type("Zend\Form\Element\Email") * @Annotation\Options({"label":"Your email address:"}) */ public $email;}
18./19.08.2012 6. PHP Unconference in Hamburg 10 von 24
Zend Framework 2
Alte Komponenten in neuem Gewand (I)● Zend\Authentication
● Zend\Barcode
● Zend\Cache
● Zend\Captcha
● Zend\Console
● Zend\Code
● Zend\Config
● Zend\Db
● Zend\Debug
● Zend\Dom
● Zend\Feed
● Zend\File
● Zend\Filter
● Zend\Form
● Zend\Http
● Zend\InputFilter
● Zend\Json
● Zend\Ldap
● Zend\Loader
● Zend\Log
18./19.08.2012 6. PHP Unconference in Hamburg 11 von 24
Zend Framework 2
Alte Komponenten in neuem Gewand (II)● Zend\Mail
● Zend\Memory
● Zend\Mime
● Zend\Mvc
● Zend\Navigation
● Zend\Pagination
● Zend\Permissions\Acl
● Zend\Progressbar
● Zend\Serializer
● Zend\Server
● Zend\Session
● Zend\Soap
● Zend\Tag
● Zend\Text
● Zend\Uri
● Zend\Validator
● Zend\Version
● Zend\View
● Zend\XmlRpc
18./19.08.2012 6. PHP Unconference in Hamburg 12 von 24
Zend Framework 2
Neue Komponenten mit neuem Glanz● Zend\Crypt
● Zend\Di
● Zend\Escaper
● Zend\EventManager
● Zend\I18n +
● Zend\Math
● Zend\ModuleManager
● Zend\ServiceManager
● Zend\Stdlib
18./19.08.2012 6. PHP Unconference in Hamburg 13 von 24
Zend Framework 2
Der Rest: vergessen, verraten & verkauft● Zend_Amf *
● Zend_Cloud *
● Zend_Currency +
● Zend_Date +
● Zend_Dojo
● Zend_Gdata *
● Zend_InfoCard
● Zend_Locale +
● Zend_Markup *
● Zend_Measure +
● Zend_OAuth *
● Zend_OpenId *
● Zend_Pdf *
● Zend_Queue *
● Zend_Reflection
● Zend_Registry
● Zend_Rest *
● Zend_Search_Lucene *
● Zend_Service *
● Zend_Test
● Zend_TimeSync *
● Zend_Tool *
● Zend_Translate +
● Zend_Wildfire
18./19.08.2012 6. PHP Unconference in Hamburg 14 von 24
Zend Framework 2
Geplante Ziele für das ZF2● Lernkurve vereinfachen / bessere Dokumentation
● Performance verbessern
● Erweiterbarkeit des Frameworks vereinfachen
● Wartung des Frameworks vereinfachen
● Module sollen »first-class-citizens« werden
● Download von einzelnen Teilen / Komponenten
● Entkopplung der Komponenten (Zend_Form, Zend_View)
● Mehr Konsistenzen schaffen (Optionen, Eigenschaften, ...)
● PHP 5.3 voll unterstützen (Namespaces, Closures, ...)
18./19.08.2012 6. PHP Unconference in Hamburg 15 von 24
Zend Framework 2
Vorteile des ZF2● Sehr performantes Autoloading
● Wiederverwendbare Module
● Wachsendes Angebot an fertigen Modulen
● Noch höhere Flexibilität als das ZF1
● Sehr lose Kopplung der Komponenten
● »Wer die ersten Hürden genommen hat, will nicht zurück.«
● Partieller Download ausgewählter Komponenten
18./19.08.2012 6. PHP Unconference in Hamburg 16 von 24
Zend Framework 2
Nachteile des ZF2● Konfigurationslastigkeit kann abschrecken
● Höhere Komplexität, dadurch höherer Bedarf an Doku, Bücher und Tutorials
● Neue Konzepte erfordern neues Denken der Entwickler
● Umgang mit git, phar, pyrus und composer muss gelernt werden
● Grundeinstellungen sind im Framework nicht enthalten (Skeleton)
● Inhärente Probleme eines Eventmanagers vorhanden
18./19.08.2012 6. PHP Unconference in Hamburg 17 von 24
Zend Framework 2
http://modules.zendframework.com/● BjyProfiler
● DoctrineModule
● DojoModule
● TwitterBootstrap
● ZendSkeletonModule
● ZendDeveloperTools
● ZfcTwitterBootstrap
● ZfcUser
● ZeTwig
18./19.08.2012 6. PHP Unconference in Hamburg 18 von 24
Zend Framework 2
Struktur für Applikationen und Module
Quelle: Zend Framework 2 2.0.0rc3 documentation
18./19.08.2012 6. PHP Unconference in Hamburg 19 von 24
Zend Framework 2
Installation● Downloadseite
– http://packages.zendframework.com/
● Installation der Package mit Pyrus– pyrus.phar . channel-discover packages.zendframework.com
– pyrus.phar . install zf2/<zf-package>
● Installation der Library mit Git von GitHub– git clone --recursive https://github.com/zendframework/zf2.git
● Installation Skeleton Application mit Composer– Download Zip https://github.com/zendframework/ZendSkeletonApplication
– Entpacken und in Projektverzeichnis verschieben
– php composer.phar self-update
– php composer.phar install
18./19.08.2012 6. PHP Unconference in Hamburg 20 von 24
Zend Framework 2
Mitmachen beim ZF?● Dokumentation
– http://zf2.readthedocs.org/ Edit this document
– Tutorial
– Übersetzung
● Module
– http://modules.zendframework.com/
● Bugtracker
– http://framework.zend.com/issues/browse/ZF2
18./19.08.2012 6. PHP Unconference in Hamburg 21 von 24
Zend Framework 2
Links und Quellen● http://framework.zend.com/zf2/
● http://zf2.readthedocs.org/
● https://github.com/zendframework
● https://github.com/ZF-Commons
● http://framework.zend.com/wiki/display/ZFDEV2/
● http://packages.zendframework.com/
● http://modules.zendframework.com/
● http://git.zendframework.com/
● http://www.zendframeworkmagazin.de/
18./19.08.2012 6. PHP Unconference in Hamburg 22 von 24
Zend Framework 2
TEIL 2
Ein kleines Beispiel
(wenn noch Zeit ist)
18./19.08.2012 6. PHP Unconference in Hamburg 23 von 24
Zend Framework 2
TEIL 3
Fragen?Meinungen?
Neue Chuck Norris Witze?
18./19.08.2012 6. PHP Unconference in Hamburg 24 von 24
Zend Framework 2
Danke für Eure Aufmerksamkeit!
Ralf Eggert <[email protected]>
Tobias Ranft <[email protected]>