This is my talk I gave at the International PHP Conference 2007 - Spring Edition in Ludwigsburg, Germany. The talk introduces the basic concepts of the Zend Framework. Additionally some components are shown in more detail and some advanced concepts are covered.
2. Carsten Lucke
Das Zend Framework
Sprecher: Carsten Lucke
• Sofware-Ingenieur bei der sd&m AG,
München
• Aktives Mitglied der sd&m Client-
Community
• PEAR und PECL Entwickler
• Schreibt für Fachzeitschriften/-bücher über
diverse PHP-Themen
2
3. Carsten Lucke
Das Zend Framework
Agenda
• Einführung und Überblick über das ZF
• Framework oder Komponentenbibliothek?
• Fortgeschrittene Techniken
• Bewertung
3
4. Carsten Lucke
Das Zend Framework
Agenda
> Einführung und Überblick über das ZF
Framework oder Komponentenbibliothek?
Fortgeschrittene Techniken
Bewertung
4
5. Carsten Lucke
Das Zend Framework
Was ist das ZF?
• Teils Application Framework, teils
Component Library
• Open-Source
• Basiert auf PHP 5, objektorientiert entwickelt
• Liefert sauberen und stabilen Code mit sehr
guter Dokumentation
5
14. Carsten Lucke
Das Zend Framework
Agenda
Einführung und Überblick über das ZF
> Framework oder Komponentenbibliothek?
Fortgeschrittene Techniken
Bewertung
7
15. Carsten Lucke
Das Zend Framework
Was bietet das ZF?
Framework-Teil: Komponenten-Teil:
8
16. Carsten Lucke
Das Zend Framework
Was bietet das ZF?
Framework-Teil: Komponenten-Teil:
• MVC-Komponenten
8
17. Carsten Lucke
Das Zend Framework
Was bietet das ZF?
Framework-Teil: Komponenten-Teil:
• MVC-Komponenten
• Front-Controller basierte
MVC-Implementierung
8
18. Carsten Lucke
Das Zend Framework
Was bietet das ZF?
Framework-Teil: Komponenten-Teil:
• MVC-Komponenten
• Front-Controller basierte
MVC-Implementierung
• Requestverarbeitung:
Controller/Action
8
19. Carsten Lucke
Das Zend Framework
Was bietet das ZF?
Framework-Teil: Komponenten-Teil:
• MVC-Komponenten • Authentication &
Authorization
• Front-Controller basierte
MVC-Implementierung
• Requestverarbeitung:
Controller/Action
8
20. Carsten Lucke
Das Zend Framework
Was bietet das ZF?
Framework-Teil: Komponenten-Teil:
• MVC-Komponenten • Authentication &
Authorization
• Front-Controller basierte
MVC-Implementierung • Database
• Requestverarbeitung:
Controller/Action
8
33. Carsten Lucke
Das Zend Framework
Requestlebenszyklus des ZF
11
34. Carsten Lucke
Das Zend Framework
Requestlebenszyklus des ZF
Front-Controller
Request:
http://host/index/bar/
11
35. Carsten Lucke
Das Zend Framework
Requestlebenszyklus des ZF
Router
Front-Controller
Request:
http://host/index/bar/ Routing
11
36. Carsten Lucke
Das Zend Framework
Requestlebenszyklus des ZF
Router Dispatcher
Front-Controller
Request:
http://host/index/bar/ Routing
Dispatching
11
37. Carsten Lucke
Das Zend Framework
Requestlebenszyklus des ZF
Router Dispatcher IndexController
Front-Controller
Request:
http://host/index/bar/ Routing
Dispatching
barAction()
11
38. Carsten Lucke
Das Zend Framework
Requestlebenszyklus des ZF
Router Dispatcher IndexController
Front-Controller
Request:
http://host/index/bar/ Routing
Dispatching
barAction()
Wiederholung bis Request dispatched ist
11
39. Carsten Lucke
Das Zend Framework
Requestlebenszyklus des ZF
Router Dispatcher IndexController
Front-Controller
Request:
http://host/index/bar/ Routing
Dispatching
barAction()
Wiederholung bis Request dispatched ist
Response
11
40. Carsten Lucke
Das Zend Framework
Typische Verzeichnisstruktur
12
41. Carsten Lucke
Das Zend Framework
Typische Verzeichnisstruktur
RewriteEngine on
RewriteRule .* index.php
12
42. Carsten Lucke
Das Zend Framework
Typische Verzeichnisstruktur
RewriteEngine on
RewriteRule .* index.php
deny from all
12
43. Carsten Lucke
Das Zend Framework
Typische Verzeichnisstruktur
RewriteEngine on
RewriteRule .* index.php
deny from all
deny from all
12
44. Carsten Lucke
Das Zend Framework
Typische Verzeichnisstruktur
RewriteEngine on
RewriteRule .* index.php
deny from all
deny from all
RewriteEngine off
12
45. Carsten Lucke
Das Zend Framework
Action-Controller für die Dialog/
Client-Logik
• Fachliche Verarbeitung eines Requests
• Usecase-Aufrufe
• Lesen anzuzeigender Daten aus DB etc.
• Speichern eingegebener Daten
• Rendern der anzuzeigenden Seite mit Hilfe
von Views
13
46. Carsten Lucke
Das Zend Framework
Action-Controller für die Dialog/Client-Logik
class IndexController extends Zend_Controller_Action
{
protected $_view = null;
public function init()
{
parent::init();
$this->_view = $this->getInvokeArg('view');
}
public function indexAction() {
$this->_view->title = 'Road-racing riders list';
$this->_view->riders = array('Lance Armstrong', 'Erik Zabel', 'Tom Boonen');
$this->_response->appendBody( $this->_view->render('riderslist.phtml') );
}
}
14
47. Carsten Lucke
Das Zend Framework
Views für die Präsentation
• Separation von Präsentation und Logik bzw.
Datenhaltung
• Ausschließlich Wissen über die Präsentation
• Eigene View-Datenhaltung möglich
• Rendering der anzuzeigenden Webseite (oder
Teilen davon)
15
49. Carsten Lucke
Das Zend Framework
Der „Komponenten-Anteil“ des
Zend Framework
17
50. Carsten Lucke
Das Zend Framework
Komponentenüberblick ZF
• Hohe Anzahl an Komponenten
• Abdeckung vieler Bereiche:
• Auth, I18N, Webservices, Database, etc.
• Gute Dokumentation und viele Beispiele
18
51. Carsten Lucke
Das Zend Framework
Demonstration: ZF-Komponenten
zur Abfrage eines RSS-Feed
Anforderungen:
19
52. Carsten Lucke
Das Zend Framework
Demonstration: ZF-Komponenten
zur Abfrage eines RSS-Feed
Anforderungen:
• Abfrage der Feed-Informationen
19
53. Carsten Lucke
Das Zend Framework
Demonstration: ZF-Komponenten
zur Abfrage eines RSS-Feed
Anforderungen:
• Abfrage der Feed-Informationen
• Fehlerbehandlung bei Nichterreichbarkeit
19
54. Carsten Lucke
Das Zend Framework
Demonstration: ZF-Komponenten
zur Abfrage eines RSS-Feed
Anforderungen:
• Abfrage der Feed-Informationen
• Fehlerbehandlung bei Nichterreichbarkeit
• Caching der Ergebnisse
19
55. Carsten Lucke
Das Zend Framework
Demonstration: ZF-Komponenten
zur Abfrage eines RSS-Feed
Anforderungen:
• Abfrage der Feed-Informationen
• Fehlerbehandlung bei Nichterreichbarkeit
• Caching der Ergebnisse
Eingesetzte Komponenten:
19
56. Carsten Lucke
Das Zend Framework
Demonstration: ZF-Komponenten
zur Abfrage eines RSS-Feed
Anforderungen:
• Abfrage der Feed-Informationen
• Fehlerbehandlung bei Nichterreichbarkeit
• Caching der Ergebnisse
Eingesetzte Komponenten:
• Zend_Feed & Zend_Cache
19
60. Carsten Lucke
Das Zend Framework
Agenda
Einführung und Überblick über das ZF
Framework oder Komponentenbibliothek?
> Fortgeschrittene Techniken
Bewertung
23
64. Carsten Lucke
Das Zend Framework
Template-basierte Views
• Zend_View_Interface als Schnittstelle
• Template-Engine Ihrer Wahl anstelle von
PHP/HTML Views
• Rahmentemplate mit Platzhaltern anstelle
von Includes innerhalb von Views
25
65. Carsten Lucke
Das Zend Framework
Mehrere Actions zur Request-
abarbeitung
• Aufteilung der fachlichen Abarbeitung eines
Request auf mehrere Controller
• Dispatch-Zyklus erlaubt Einsatz mehrerer
Controller/Actions zur Requestabarbeitung
• „Forwarding“: $this->_forward()
• Problem: Controller haben dadurch Kenntnis
von einander
26
66. Carsten Lucke
Das Zend Framework
Mehrere Actions zur Request-
abarbeitung :: Lösungsansatz
• Abstrakte Action-Basisklasse zur
Verwaltung eines Navigation-Stack
• init() zur Initialisierung des Stack
• myForward() statt _forward()
• postDispatch() für „Forwarding“ mit mod.
Navigation-Stack als Kontextparameter
27
67. Carsten Lucke
Das Zend Framework
Agenda
Einführung und Überblick über das ZF
Framework oder Komponentenbibliothek?
Fortgeschrittene Techniken
> Bewertung
28
68. Carsten Lucke
Das Zend Framework
Bewertung des Zend Framework
Pro: Contra:
29
69. Carsten Lucke
Das Zend Framework
Bewertung des Zend Framework
Pro: Contra:
• Durchdachte MVC-
Umsetzung
29
70. Carsten Lucke
Das Zend Framework
Bewertung des Zend Framework
Pro: Contra:
• Durchdachte MVC-
Umsetzung
• Viele Komponenten für
Querschnitts- und
Spezialaufgaben
29
71. Carsten Lucke
Das Zend Framework
Bewertung des Zend Framework
Pro: Contra:
• Durchdachte MVC-
Umsetzung
• Viele Komponenten für
Querschnitts- und
Spezialaufgaben
• Hohe Qualität
29
72. Carsten Lucke
Das Zend Framework
Bewertung des Zend Framework
Pro: Contra:
• Durchdachte MVC-
Umsetzung
• Viele Komponenten für
Querschnitts- und
Spezialaufgaben
• Hohe Qualität
• Gute Dokumentation
29
73. Carsten Lucke
Das Zend Framework
Bewertung des Zend Framework
Pro: Contra:
• Durchdachte MVC- • Einsatz von Zend_View in
Umsetzung größeren Projekten / kompl.
Views zu überdenken
• Viele Komponenten für
Querschnitts- und
Spezialaufgaben
• Hohe Qualität
• Gute Dokumentation
29
74. Carsten Lucke
Das Zend Framework
Bewertung des Zend Framework
Pro: Contra:
• Durchdachte MVC- • Einsatz von Zend_View in
Umsetzung größeren Projekten / kompl.
Views zu überdenken
• Viele Komponenten für
Querschnitts- und • Für größere Projekte evtl.
Spezialaufgaben noch „Framework-Arbeit“
notwendig
• Hohe Qualität
• Gute Dokumentation
29
75. Carsten Lucke
Das Zend Framework
Bewertung des Zend Framework
Pro: Contra:
• Durchdachte MVC- • Einsatz von Zend_View in
Umsetzung größeren Projekten / kompl.
Views zu überdenken
• Viele Komponenten für
Querschnitts- und • Für größere Projekte evtl.
Spezialaufgaben noch „Framework-Arbeit“
notwendig
• Hohe Qualität
• Framework für stark
• Gute Dokumentation
dialogbasierte Systeme evtl.
nicht der richtige Ansatz
29
76. Carsten Lucke
Das Zend Framework
Vielen Dank für Ihre Aufmerksamkeit!
Haben Sie Fragen?
http://lucke.info
30