Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Geleitwort
19
Vorwort
21
Vorwort des Autors zur Vorauflage
23
Teil I Die Grundlagen
25
1 Einführung in das Zend Framework 2
27
1.1 Abgrenzung zu anderen PHP-Frameworks
27
1.2 Die Zielgruppe des Buches
28
1.3 Wegweiser
28
1.4 Überblick über die Komponenten
29
1.5 Listings, Projektdateien, Programmierrichtlinien
31
1.6 Der Zend Framework 2-Kosmos
31
1.7 Links zum Buch
32
2 Neuerungen im Zend Framework 2
33
2.1 Begrifflichkeiten
33
2.2 PHP-Version
34
2.2.1 PHP-Namespaces
34
2.2.2 Closures
36
2.2.3 Late Static Binding
38
2.3 Git und GitHub
39
2.4 Neue Konzepte
40
2.4.1 Verbesserte Modularität
40
2.4.2 Dependency Injection
41
2.4.3 Service-Locator
43
2.4.4 Ereignisgesteuerte Architektur
45
2.5 Komponentenvergleich
48
2.6 Vor- und Nachteile des ZF2
50
3 Das Zend Framework einrichten
53
3.1 Voraussetzungen
53
3.1.1 PHP-Version
53
3.1.2 PHP-Extensions
54
3.1.3 Apache 2-Konfiguration
57
3.1.4 Virtual Host einrichten unter Linux
57
3.1.5 Virtual Host einrichten unter Windows
59
3.1.6 Weitere Informationen
60
3.2 Zend Framework 2 installieren
61
3.2.1 Installation aus einem ZIP-Paket
61
3.2.2 Installation mit Pyrus
62
3.2.3 Installation mit Composer
65
3.3 SkeletonApplication installieren
68
3.3.1 Installation aus einem ZIP-Paket
69
3.3.2 Installation mit Git
69
3.3.3 Einrichtung mit Composer
70
3.4 Struktur einer Zend Framework 2-Anwendung
71
3.4.1 Hauptverzeichnis
71
3.4.2 Das Konfigurationsverzeichnis
73
3.4.3 Das Public-Verzeichnis
74
3.4.4 Vendor-Verzeichnis
76
3.4.5 Das Modulverzeichnis
77
3.4.6 Kaskadierendes Laden der Konfigurationsdaten
82
3.4.7 Autoloading mit Composer
83
Teil II Die Komponenten
85
4 Basis-Komponenten
87
4.1 Zend\Loader
87
4.1.1 StandardAutoloader
88
4.1.2 ClassMapAutoloader
88
4.1.3 AutoloaderFactory
89
4.1.4 Eigenen Autoloader erstellen
90
4.2 Zend\Config
90
4.2.1 Konfigurationsdateien lesen
90
4.2.2 Konfigurationsdateien schreiben
91
4.3 Zend\Cache
92
4.3.1 Cache-Storages
92
4.3.2 Storage-Plugins und Capabilities
94
4.3.3 Cache-Patterns
95
4.4 Zend\Log
96
4.4.1 Zusammenspiel der Teilkomponenten
97
4.4.2 Writer
98
4.4.3 Formatter
98
4.4.4 Filter
98
4.5 Zend\Mail und Zend\Mime
99
4.5.1 Eine E-Mail-Nachricht erstellen
100
4.5.2 Eine E-Mail-Nachricht versenden
100
4.5.3 MIME-Nachricht erstellen
101
4.5.4 E-Mail-Nachrichten abrufen
102
4.6 Zend\Filter
103
4.6.1 Standardfilter
104
4.6.2 Statische Filter
106
4.6.3 Filterketten
107
4.6.4 Eigenen Filter erstellen
107
4.7 Zend\Validator
108
4.7.1 Standardvalidatoren
109
4.7.2 Statische Validatoren
111
4.7.3 Validatorketten
112
4.7.4 Eigenen Validator erstellen
113
4.7.5 Validator-Fehlermeldungen anpassen
115
5 Der Event-Manager
117
5.1 Einführung
117
5.2 EventManagerAwareInterface
118
5.3 Listener mit Closures umsetzen
119
5.4 Listener mit Aggregaten umsetzen
121
5.5 Übergabe von Parametern an Listener
124
5.6 SharedEventManager
124
6 Service Location & Dependency Injection
127
6.1 Zend\ServiceManager
127
6.1.1 Beispielklassen
128
6.1.2 Unterstützte Instanziierungsarten
130
6.1.3 Den Service-Manager konfigurieren
131
6.1.4 Konfigurationsklasse
132
6.1.5 Konfigurationsdatei
133
6.1.6 Initializer einrichten
135
6.1.7 Abstrakte Fabrik verwenden
137
6.1.8 Den Service-Manager richtig nutzen
140
6.2 Zend\Di
141
6.2.1 Automatische Erkennung mit »RuntimeDefinition«
141
6.2.2 Definition kompilieren mit »CompilerDefinition«
144
6.2.3 Abhängigkeiten konfigurieren
147
6.2.4 Zend\Di richtig nutzen
150
7 Der Modul-Manager
151
7.1 Einführung
151
7.2 Aufbau eines Moduls
152
7.2.1 Die Modul-Klasse
153
7.2.2 Das Konfigurationsverzeichnis
155
7.2.3 Assets im Public-Verzeichnis
155
7.2.4 Das Source-Verzeichnis
156
7.2.5 Tests
156
7.2.6 Das View-Verzeichnis
157
7.3 Modulkonfiguration
157
7.3.1 Autoloading konfigurieren
157
7.3.2 Konfigurationsdaten bereitstellen
158
7.3.3 Services konfigurieren
161
7.3.4 Controller konfigurieren
164
7.3.5 Controller-Plugins konfigurieren
166
7.3.6 View-Helper konfigurieren
167
7.3.7 Weitere Konfigurationen
169
7.4 Ein Anwendungsmodul entwickeln
169
7.4.1 Die Modul-Klasse
170
7.4.2 Modulkonfiguration
171
7.4.3 Controller und View-Script einrichten
173
7.4.4 Request-Parameter verwenden
175
7.5 Library-Modul erstellen
177
7.6 Fremdmodule installieren
179
7.6.1 Die ZendDeveloperTools mit Composer installieren
179
7.6.2 ZfcUser und ZfcBase mit Git klonen
181
8 MVC-Komponenten
183
8.1 Einführung
183
8.2 Application
184
8.2.1 Initialisierungsprozess
184
8.2.2 Bootstrapping
186
8.2.3 Der Verarbeitungsprozess
188
8.3 Services
189
8.4 Routing
192
8.4.1 Route-Typen
192
8.4.2 Der Route-Typ »Hostname«
193
8.4.3 Der Route-Typ »Literal«
194
8.4.4 Der Route-Typ »Regex«
195
8.4.5 Der Route-Typ »Segment«
196
8.4.6 SimpleRouteStack
197
8.4.7 TreeRouteStack
198
8.4.8 Routing konfigurieren
201
8.4.9 Routing-Tipps
203
8.5 Events
205
8.5.1 Das »route«-Event für die Sprachfestlegung nutzen
205
8.5.2 Das »dispatch.error«-Event für das Logging nutzen
206
8.5.3 Das »finish«-Event für die Zeitmessung nutzen
209
8.6 Controller
211
8.6.1 Einführung
211
8.6.2 Action-Controller
212
8.6.3 Zugriff auf Objekte
214
8.6.4 Services injizieren
215
8.6.5 RESTful-Controller
218
8.7 Controller-Plugins
224
8.7.1 Zugriff auf Plugins
224
8.7.2 Das »Layout«-Plugin
225
8.7.3 Das »Url«-Plugin
225
8.7.4 Das »Redirect«-Plugin
227
8.7.5 Das »Forward«-Plugin
227
8.7.6 Das »Params«-Plugin
229
8.7.7 Das »PostRedirectGet«-Plugin
229
8.7.8 Das »FilePostRedirectGet«-Plugin
231
8.7.9 Das »FlashMessenger«-Plugin
233
8.7.10 Ein eigenes Plugin erstellen
234
9 View-Komponenten
237
9.1 Einführung in Zend\View
237
9.1.1 Bestandteile
237
9.1.2 Teilkomponenten
238
9.1.3 Konfiguration
240
9.2 ViewModels
241
9.2.1 ViewModels verschachteln
242
9.2.2 Weitere View-Models
243
9.3 Resolver, Renderer und Strategies
244
9.3.1 Resolver
244
9.3.2 Renderer
245
9.3.3 Strategies
245
9.4 View-Scripts
247
9.5 View-Helper
248
9.5.1 View-Helper für HTML-Kopfdaten
249
9.5.2 View-Helper für URLs
250
9.5.3 View-Helper für das Escaping
250
9.5.4 Weitere View-Helper
251
9.5.5 Einen eigenen View-Helper erstellen
253
9.6 Template-Engines
256
10 Datenbank-Komponenten
257
10.1 Das Datenbankmodell
257
10.2 Datenbankadapter
258
10.2.1 Konfiguration eines Adapters
258
10.2.2 Ausführen von lesenden Abfragen
260
10.2.3 Ausführen von schreibenden Abfragen
261
10.2.4 ResultSet für Adapter konfigurieren
262
10.3 SQL-Abfragen generieren
265
10.3.1 Lesende Abfragen generieren
265
10.3.2 Schreibende Abfragen generieren
268
10.3.3 Abfragen mit DDL generieren
270
10.4 Gateway-Klassen
271
10.4.1 Zend\Db\TableGateway
271
10.4.2 TableGateway-Features
274
10.4.3 Zend\Db\RowGateway
278
10.5 Doctrine 2
281
10.5.1 Installation und Konfiguration
281
10.5.2 Modul und Entitäten vorbereiten
282
10.5.3 Doctrine 2 einsetzen
286
11 Ausgabe-Komponenten
289
11.1 Zend\I18n
289
11.1.1 Translator
289
11.1.2 View-Helper
292
11.1.3 Fehlermeldungen für Zend\Validator übersetzen
294
11.2 ZendNavigation
295
11.2.1 Container und Seiten anlegen
295
11.2.2 Navigation konfigurieren
297
11.2.3 Navigation ausgeben
299
11.2.4 Navigation und ACL
301
11.3 Zend\Paginator
302
11.3.1 Adapter für Zend\Paginator
303
11.3.2 Seitennavigation
305
11.4 Zend\Feed
309
11.4.1 Feeds lesen
309
11.4.2 Feeds schreiben
310
11.4.3 Feeds mit Zend\Mvc und Zend\View
311
11.5 Weitere Hilfskomponenten
312
11.5.1 Zend\Escaper
312
11.5.2 Zend\Json
312
11.5.3 Zend\Tag
313
11.5.4 Zend\Barcode
314
12 Formularverarbeitung
315
12.1 Zend\InputFilter
315
12.1.1 Ein InputFilter-Objekt erstellen
315
12.1.2 Factory mit Konfigurationsdaten nutzen
317
12.1.3 InputFilter als eigenständige Klassen
318
12.1.4 Hierarchische InputFilter
320
12.1.5 InputFilter im MVC
322
12.2 Zend\Form
322
12.2.1 Einführung
323
12.2.2 Ein Form-Objekt erstellen
323
12.2.3 Fieldsets
325
12.2.4 Collections
328
12.2.5 Elemente
331
12.2.6 Ausgabe mit View-Helpern
333
12.2.7 Validierung von Formularen
337
12.2.8 Objekte anbinden
340
12.2.9 Annotationen
343
12.2.10 Datei-Uploads
346
13 Benutzermanagement
351
13.1 Zend\Session
351
13.1.1 Mit Session-Containern arbeiten
351
13.1.2 Session-Manager verwenden
352
13.1.3 Sessions in der Datenbank speichern
353
13.2 Zend\Permissions\Acl
355
13.2.1 Begrifflichkeiten
355
13.2.2 ACL definieren
355
13.2.3 ACL abfragen
357
13.2.4 ACL cachen
357
13.3 Zend\Permissions\Rbac
358
13.3.1 Begrifflichkeiten
358
13.3.2 RBAC definieren
359
13.3.3 RBAC abfragen
360
13.4 Zend\Authentication
361
13.4.1 Per HTTP authentifizieren
361
13.4.2 Gegen eine Datenbanktabelle authentifizieren
363
13.4.3 Authentifizierungsservice
365
13.5 Zend\Ldap
368
14 Sonstige Komponenten
369
14.1 Zend\Http
369
14.1.1 HTTP-Anfrage senden und verarbeiten
369
14.1.2 Verbindungsadapter
370
14.1.3 Fortgeschrittener Einsatz
370
14.2 Zend\Soap
371
14.2.1 SOAP-Server bereitstellen
371
14.2.2 SOAP-Client einsetzen
373
14.3 Zend\XmlRpc
374
14.3.1 XML-RPC-Server bereitstellen
374
14.3.2 XML-RPC-Client einsetzen
375
14.4 Zend\Crypt
376
14.5 Zend\Stdlib
377
Teil III Die Module
381
15 Das Anwendungsmodul
383
15.1 Anforderungen
383
15.2 Anwendungsmodul konfigurieren
384
15.3 Eigene View-Helper
388
15.3.1 Der View-Helper »PageTitle«
388
15.3.2 Der View-Helper »ShowMessages«
389
15.3.3 Der View-Helper »ShowForm«
391
15.3.4 Der View-Helper »Date«
393
15.4 Mehrstufiges Seitenlayout
395
15.5 Menü im Seitenkopf einrichten
399
15.6 Controller und View-Scripts
401
15.7 Meldungen der Validatoren übersetzen
402
15.8 Pagination
403
15.9 Eigene Filter
404
15.9.1 Der »StringToUrl«-Filter
404
15.9.2 Der »StringHtmlPurifier«-Filter
406
15.9.3 Konfiguration für beide Filter
407
15.10 CKEditor
409
16 Das Blog-Modul
411
16.1 Anforderungen
411
16.2 Das Blog-Modul einrichten
412
16.3 Modelinfrastruktur
419
16.3.1 Datenbank einrichten
419
16.3.2 Klassen erstellen
421
16.4 Filter und Formulare
425
16.4.1 Filter und Validierung
426
16.4.2 Formularklasse
427
16.4.3 Factories
429
16.5 Den Blog-Service einrichten
431
16.5.1 Formular-Objekte injizieren
432
16.5.2 Der Blog-Service – Überblick
433
16.6 Öffentlicher Bereich
440
16.6.1 Action-Controller einrichten
440
16.6.2 View-Scripts einrichten
443
16.7 Administrationsbereich
444
16.7.1 Action-Controller einrichten
445
16.7.2 View-Scripts einrichten
447
16.8 Optimierungen
451
17 Das Benutzer-Modul
453
17.1 Anforderungen
453
17.2 Vorbereitungen
454
17.3 Authentifizierung und Autorisierung
455
17.3.1 Authentifizierungsadapter
456
17.3.2 Authentifizierungsservice
460
17.3.3 Autorisierungsservice
461
17.3.4 Konfiguration der Benutzerrechte
464
17.4 User-Service einrichten
466
17.5 View-Helper einrichten
470
17.5.1 Der View-Helper »UserIsAllowed«
470
17.5.2 Der View-Helper »UserShowWidget«
471
17.6 UserListener einrichten
475
17.7 Öffentlicher Bereich
478
17.7.1 Den Action-Controller einrichten
478
17.7.2 View-Scripts einrichten
481
18 Das Pizza-Modul
483
18.1 Anforderungen
483
18.2 Vorbereitungen
484
18.3 Modelinfrastruktur
485
18.4 Pizza-Service einrichten
490
18.5 Formulare einrichten
494
18.6 Bild-Upload einrichten
498
18.7 Administrationsbereich
501
18.8 Ein Pizza-Karussell einrichten
502
19 Das Kommentar-Modul
505
19.1 Anforderungen
505
19.2 Vorbereitungen
506
19.3 Modul-Konfiguration
508
19.4 View-Helper einrichten
511
19.4.1 Der View-Helper »CommentShowLinks«
511
19.4.2 Der View-Helper »CommentShowComments«
513
19.4.3 Einsatz der View-Helper
516
19.5 Kommentare anlegen
519
19.6 Kommentar-Service erweitern
521
20 Das Spamabwehr-Modul
525
20.1 Anforderungen
525
20.2 Vorbereitungen
526
20.3 Modul-Konfiguration
527
20.4 Autoloading
529
20.5 Spamabwehr-Service
530
20.6 Controller-Plugin
532
20.7 Der View-Helper »SpamCheck«
534
20.8 Spamabwehr im Kommentar-Modul nutzen
535
20.8.1 Konfiguration anpassen
536
20.8.2 Entität anpassen
537
20.8.3 Den Kommentar-Service anpassen
537
20.8.4 Action-Controller anpassen
539
20.8.5 View-Scripts anpassen
542
20.9 Das Spamabwehr-Modul im Einsatz
545
21 Das CMS-Modul
549
21.1 Anforderungen
549
21.2 Vorbereitungen
550
21.2.1 Konfiguration
551
21.2.2 CMS-Service
552
21.2.3 Textblöcke
553
21.2.4 View-Helper zur Ausgabe von Textblöcken
553
21.3 Ein Formular einrichten
555
21.4 CMS-Service erweitern
556
21.5 View-Helper für das Bearbeiten erweitern
558
21.6 JavaScript-Funktionen
560
21.7 Controller einrichten
562
22 Das Shop-Modul
565
22.1 Anforderungen
565
22.2 Vorbereitungen
566
22.3 Modelinfrastruktur
567
22.4 Bestellservice
573
22.5 Warenkorb-Service
576
22.6 Controller-Plugin
580
22.7 View-Helper
581
22.7.1 Der View-Helper »ShowBasket«
581
22.7.2 Der View-Helper »GetOrder«
586
22.8 Der Warenkorb-Controller
587
22.9 Warenkorb-View-Scripts
589
22.10 Den Warenkorb im Pizza-Modul einsetzen
593
22.11 Das Warenkorb-Modul im Einsatz
594
Anhang
599
A Installation der Projektdateien
601
A.1 ZIP-Pakete downloaden
601
A.2 Dateien von GitHub klonen
602
A.3 Installation ohne Composer
602
A.4 Virtual Host anpassen
603
B Weitere Komponenten
605
C Performance-Tipps
607
C.1 Autoloader ClassMap
607
C.2 TemplateMap
607
C.3 Die Modul-Konfiguration cachen
608
C.4 Weitere Caches
608
Index
611