1. Zend Framework 2
6. PHP Unconference, Hamburg
18. und 19. August 2012
Zend Framework 2
kommt bald - und jetzt?
18./19.08.2012 6. PHP Unconference in Hamburg 1 von 24
2. Zend Framework 2
Wer sind wir?
● Ralf Eggert ● Tobias Ranft
● ralf@travello.com ● tobias@ranft.biz
● Geschäftsführer Travello GmbH ● Detlev Louis Motorradvertriebs
GmbH
● PHP seit 1999
● Webentwickler seit 2000
● Zend Framework seit 2006
● Zend Framework seit 2010
● Autor für PHP Magazin, seit 2007
Zend_Column ● www.louis.de
=> sucht ZF Freelancer
● Buchautor, Addison-Wesley,
Neuauflage 2013
● www.zendframeworkmagazin.de
=> sucht Autoren
18./19.08.2012 6. PHP Unconference in Hamburg 2 von 24
3. Zend Framework 2
TEIL 1
die Neuerungen
18./19.08.2012 6. PHP Unconference in Hamburg 3 von 24
4. Zend Framework 2
Was interessiert mich mein Geschwätz von gestern?
18./19.08.2012 6. PHP Unconference in Hamburg 4 von 24
5. Zend Framework 2
Neue Konzepte im ZF2 (I)
● PHP Namespaces
– ZendFormElement statt Zend_Form_Element
– namespace ZendAuthenticationAdapter;
– use ZendAuthenticationResult as AuthenticationResult;
use ZendDbAdapterAdapter as DbAdapter;
use ZendDbResultSetResultSet;
use ZendDbSqlExpression;
use ZendDbSqlSelect as DbSelect;
– use ZendInputFilterFactory as InputFactory;
18./19.08.2012 6. PHP Unconference in Hamburg 5 von 24
6. Zend Framework 2
Neue Konzepte im ZF2 (II)
● Neue Modularität
– ZendModuleManager
– Alles ist ein Modul
– Module in /module und /vendor
– Einfache Aktivierung
● Dependency Injection
– ZendDi
– 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 6 von 24
7. Zend Framework 2
Neue Konzepte im ZF2 (III)
● Service Locator
– ZendServiceManager
– Zentrale Registrierung für Objekte zur späteren Wiederverwendung
– Ersetzt Zend_Registry
● Event-Driven Architecture
– ZendEventManager
– 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 7 von 24
8. Zend Framework 2
Neue Konzepte im ZF2 (IV)
● Neuer Autoloader
– ZendLoader
– 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
– ZendStdlibAbstractOptions
18./19.08.2012 6. PHP Unconference in Hamburg 8 von 24
9. Zend Framework 2
Neue Konzepte im ZF2 (V)
● Annotations
namespace MyVendorModel;
use ZendFormAnnotation;
/**
* @AnnotationHydrator("ZendStdlibHydratorObjectProperty")
* @AnnotationName("user")
*/
class User
{
/**
* @AnnotationAttributes({"type":"text" })
* @AnnotationValidator({"type":"Regex","options":{"regex":"/^[a-zA-Z][a-zA-Z0-9_-]{1,19}/"}})
* @AnnotationOptions({"label":"Username:"})
*/
public $username;
/**
* @AnnotationType("ZendFormElementEmail")
* @AnnotationOptions({"label":"Your email address:"})
*/
public $email;
}
18./19.08.2012 6. PHP Unconference in Hamburg 9 von 24
14. 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 14 von 24
15. 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 15 von 24
16. 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 16 von 24
18. 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 18 von 24
19. 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 19 von 24
20. Zend Framework 2
Mitmachen beim ZF?
● Dokumentation
– http://zf2.readthedocs.org/ Edit this document
– fw-docs@lists.zend.com
– Tutorial
– Übersetzung
● Module
– http://modules.zendframework.com/
● Bugtracker
– http://framework.zend.com/issues/browse/ZF2
18./19.08.2012 6. PHP Unconference in Hamburg 20 von 24