Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Geleitwort
25
Vorwort
27
Teil I Grundlagen
29
1 Einführung in das Zend Framework 3
31
1.1 Was ist das Zend Framework 3?
31
1.2 An wen richtet sich dieses Buch?
31
1.3 Warum das Zend Framework 3 einsetzen?
32
1.3.1 Warum vom ZF1 oder ZF2 migrieren?
33
1.3.2 Warum vom anderen Framework wechseln?
34
1.3.3 Welche Konzepte werden im ZF3 implementiert?
35
1.3.4 Wofür das Zend Framework einsetzen?
37
1.4 Aufbau des Buches
38
1.4.1 Teil I
38
1.4.2 Teil II
38
1.4.3 Teil III
39
1.4.4 Teil IV
40
1.4.5 Teil V
40
1.4.6 Anhang
41
1.5 Listings und Programmierstil
41
1.6 Technische Voraussetzungen
42
1.6.1 PHP
43
1.6.2 PHP CLI-Webserver
45
1.6.3 Apache 2-Webserver
45
1.6.4 Nginx-Webserver
49
1.6.5 Datenbank
50
1.6.6 Git
51
1.6.7 Composer
52
1.6.8 Wahl der IDE
54
1.7 Installationsvarianten
54
1.7.1 Zend Framework 3 als ZIP-Paket herunterladen und entpacken
55
1.7.2 Zend Framework 3 per Composer installieren
55
1.7.3 Zend\Mvc Skeleton Application
56
1.7.4 Zend\Expressive Skeleton Application
58
1.7.5 Apigility Skeleton Application
60
1.8 Beispiel- und Übungsanwendungen
62
1.8.1 Beispielanwendung »Vote My Pizza!«
62
1.8.2 Übungsanwendung »Pin Your Pizza!«
63
1.8.3 Beispielanwendung »Zend Framework Center«
63
1.8.4 Übungsanwendung »Simple CMS«
64
1.8.5 Beispielanwendung »ZF3buch Examples«
65
1.8.6 Migrationsanwendung »ZF1legacy«
66
1.8.7 Konsolenanwendung »Entity-Builder«
66
1.9 Zusammenfassung
67
Teil II Middleware-Anwendungen
69
2 Middleware-Anwendungen einrichten
71
2.1 Einstieg
71
2.1.1 Problemstellung
71
2.1.2 PSR-7 und Middleware
72
2.1.3 Komponenten
75
2.2 Installation der Beispielanwendung
75
2.2.1 Installation unter Ubuntu Linux
76
2.2.2 Installation unter OS X und macOS Sierra
76
2.2.3 Installation unter Windows
76
2.2.4 Virtual Host einrichten
77
2.3 Aufbau einer Zend\Expressive-Anwendung
78
2.3.1 »composer.json«-Datei
79
2.3.2 Vendorverzeichnis
81
2.3.3 Konfigurationsverzeichnis für Anwendung
82
2.3.4 Datenverzeichnis
87
2.3.5 Öffentliches Verzeichnis
88
2.3.6 Modulverzeichnis
91
2.4 Aufbau eines Zend\Expressive-Moduls
91
2.4.1 Konfigurationsverzeichnis für Modul
92
2.4.2 Konfigurationsklasse für Modul
93
2.4.3 Source-Verzeichnis
94
2.4.4 Template-Verzeichnis
96
2.4.5 Testverzeichnis
98
2.5 Zusammenfassung
98
2.6 Übung und Lösung
98
2.6.1 Aufgaben
98
2.6.2 Lösungen
99
3 Routing, Actions und Templates
101
3.1 Einstieg
101
3.1.1 Problemstellung
101
3.1.2 Komponenten
102
3.2 Neues Modul anlegen und konfigurieren
102
3.3 Middleware-Routing einrichten
104
3.3.1 Routing-Parameter verstehen
105
3.3.2 Routen für Pizza-Modul konfigurieren
105
3.4 Middleware-Actions implementieren
108
3.4.1 Repositorys einrichten
109
3.4.2 Aktion für Introseite
113
3.4.3 Aktion für Pizzaseite
115
3.4.4 Aktion für Abstimmseite
116
3.4.5 Aktion für Abstimmungsverarbeitung
117
3.5 Middleware-Templates erstellen
120
3.5.1 Template-Konfiguration
120
3.5.2 Template für Introseite
121
3.5.3 Template für Abstimmseite
123
3.6 Middleware konfigurieren
126
3.6.1 Factory für die Repositorys
126
3.6.2 Middleware-Factory für die Anzeige von Seiten
128
3.6.3 Middleware-Factory für Verarbeitungen
129
3.6.4 Konfiguration für Middleware und Repositorys
129
3.7 Zusammenfassung
130
3.8 Übung und Lösung
131
3.8.1 Aufgaben
131
3.8.2 Lösung
134
4 Datenbanken und Repositorys
139
4.1 Einleitung
139
4.1.1 Problemstellung
139
4.1.2 Komponenten
140
4.1.3 Datenbank einrichten
140
4.2 Datenbankadapter konfigurieren
141
4.3 Model-Layer definieren
143
4.4 Storage einrichten
145
4.4.1 Interface für »PizzaStorage«
145
4.4.2 Implementierung der »PizzaDbStorage«
146
4.4.3 Storage für Restaurant-Datenbanktabelle
150
4.5 Repositorys implementieren
151
4.5.1 Repository für Pizzadaten
152
4.5.2 Repository für Restaurants
154
4.6 Integration in Middleware-Anwendung
155
4.6.1 Factorys für Storages
156
4.6.2 Factory für Repository
157
4.6.3 Konfiguration
158
4.7 Zusammenfassung
158
4.8 Übung und Lösung
159
4.8.1 Aufgaben
160
4.8.2 Lösung
161
5 Formulare und Benutzereingaben
165
5.1 Einleitung
165
5.1.1 Problemstellung
165
5.1.2 Komponenten
166
5.2 Input-Filter erstellen
166
5.2.1 Input-Filter-Klasse
167
5.2.2 Input-Filter-Factory
171
5.2.3 Input-Filter-Konfiguration
172
5.3 Formulare erstellen
172
5.3.1 Formular-Klasse
172
5.3.2 Formular-Factory
174
5.3.3 Formular-Konfiguration
175
5.4 Aktionen anpassen
176
5.4.1 Middleware für Pizzaseite überarbeiten
176
5.4.2 Middleware für Restaurantpreisverarbeitung überarbeiten
178
5.5 Formulare ausgeben
181
5.5.1 »Form«-View-Helper konfigurieren
182
5.5.2 Template für Ausgabe anpassen
182
5.6 Zusammenfassung
185
5.7 Übung und Lösung
185
5.7.1 Aufgaben
185
5.7.2 Lösung
188
6 Internationalisierung
191
6.1 Einleitung
191
6.1.1 Problemstellung
192
6.1.2 Komponenten
192
6.1.3 Neues »I18n Expressive«-Modul anlegen
193
6.2 Routing überarbeiten
194
6.2.1 Grundlegende Überlegungen
194
6.2.2 Routen anpassen
195
6.2.3 Sprache bei Redirects setzen
196
6.2.4 »Url«-View-Helper überschreiben
197
6.2.5 Route für Homepage anpassen
200
6.3 Locale per Middleware setzen
202
6.3.1 »LocalizationMiddleware« erstellen
202
6.3.2 Middleware konfigurieren
204
6.4 Texte übersetzen
205
6.4.1 »Translator« konfigurieren
206
6.4.2 »Translate«-View-Helper bereitstellen
208
6.4.3 »Translator« in View-Helper und Validatoren injizieren
208
6.4.4 Sprachdateien erstellen
212
6.4.5 Sprachfragmente durch Textidentifier ersetzen
214
6.4.6 Sprachauswahl einfügen
217
6.5 Datum, Uhrzeit und Währungen ausgeben
218
6.6 Datenbankinhalte internationalisieren
220
6.7 Zusammenfassung
220
6.8 Übung und Lösung
221
6.8.1 Aufgaben
221
6.8.2 Lösung
223
7 Authentifizierung und Autorisierung
227
7.1 Einleitung
227
7.1.1 Problemstellung
227
7.1.2 Komponenten
228
7.1.3 Vorbereitungen
228
7.2 Benutzerrechte konfigurieren
231
7.2.1 Benötigte Benutzerrechte ermitteln
231
7.2.2 Rollen implementieren
233
7.2.3 RBAC implementieren
235
7.3 Sessions konfigurieren
236
7.4 Benutzer authentifizieren
238
7.4.1 Authentifizierungsservice konfigurieren
239
7.4.2 Authentifizierung in Middleware durchführen
241
7.4.3 Factory für Middleware konfigurieren
244
7.5 Autorisierung angemeldeter Benutzer
245
7.5.1 Middleware für Autorisierung einrichten
246
7.5.2 Fehlerseite für nicht autorisierte Benutzer
249
7.6 Authentifizierten Benutzer handhaben
251
7.6.1 Benutzerrechte im Template überprüfen
251
7.6.2 View-Helper für Benutzerrechtsprüfung einsetzen
254
7.6.3 Authentifizierten Benutzer ausgeben
255
7.6.4 Benutzer ausloggen
257
7.7 Zusammenfassung
259
7.8 Übung und Lösung
260
7.8.1 Aufgaben
261
7.8.2 Lösung
263
8 Zend\Expressive-Anwendung optimieren
267
8.1 Einleitung
268
8.1.1 Problemstellung
268
8.1.2 Komponenten
268
8.2 Startseite entfernen
268
8.2.1 Aufräumarbeiten
269
8.2.2 Middleware zum Umleiten erstellen
270
8.3 Mehrstufiges Layout einrichten
272
8.3.1 Layout-Template aufteilen
273
8.3.2 »LayoutModel« erstellen
275
8.3.3 »ViewRendererFactory« überschreiben
277
8.4 View-Helper für Formularausgabe erstellen
279
8.4.1 Vorüberlegungen
279
8.4.2 Bootstrap-Modul einrichten
280
8.4.3 Formular-View-Helper erstellen
280
8.4.4 Formular-View-Helper einsetzen
283
8.5 Traits einsetzen zur Codereduktion
284
8.5.1 Redundanten Code erkennen
285
8.5.2 Redundanten Code durch Traits ersetzen
287
8.6 Zusammenfassung
289
8.7 Übung und Lösung
289
8.7.1 Aufgaben
289
8.7.2 Lösung
290
9 Unit-Tests für Middleware-Anwendungen
293
9.1 Einleitung
294
9.1.1 Problemstellung
294
9.1.2 Komponenten
294
9.2 Middleware-Aktionen testen
294
9.2.1 Abstrakte Testklasse
295
9.2.2 Test für Pizza-Introseite
299
9.2.3 Test für Speicherung von Restaurantpreisen
302
9.2.4 Test für Umleitung auf Introseite
307
9.2.5 Tests der Factorys für Aktions-Middleware-Klassen
309
9.2.6 Weitere Middleware-Aktionen testen
311
9.3 Middleware aus der Pipeline testen
311
9.3.1 Test für »CheckRootUriMiddleware«
312
9.3.2 Test für »InjectTranslatorMiddleware«
314
9.3.3 Test für »AuthorizationMiddleware«
317
9.3.4 Weitere Pipeline-Middlewares und deren Factorys testen
323
9.4 Formulare und Modelklassen testen
324
9.4.1 Formulare testen
325
9.4.2 Input-Filter testen
327
9.4.3 Repositorys testen
330
9.4.4 Storages testen
335
9.5 Weitere Klassen testen
342
9.6 Zusammenfassung
343
9.7 Übung und Lösung
344
9.7.1 Aufgaben
345
9.7.2 Lösung
346
Teil III MVC-Anwendungen
351
10 MVC-Anwendung einrichten
353
10.1 Einleitung
354
10.1.1 Problemstellung
354
10.1.2 Komponenten
354
10.2 Installation der Beispielanwendung
354
10.2.1 Installation unter Ubuntu Linux
355
10.2.2 Installation unter OS X und macOS Sierra
355
10.2.3 Installation unter Windows
356
10.2.4 Virtual Host einrichten
356
10.3 Aufbau einer Zend Framework 3-MVC-Anwendung
357
10.3.1 »composer.json«-Datei
358
10.3.2 Vendorverzeichnis
360
10.3.3 Konfigurationsverzeichnis
361
10.3.4 Datenverzeichnis
364
10.3.5 Öffentliches Verzeichnis
365
10.3.6 Modulverzeichnis
369
10.4 Aufbau eines Zend Framework 3-Moduls
369
10.4.1 Modulklasse
370
10.4.2 Konfigurationsverzeichnis
372
10.4.3 Source-Verzeichnis
373
10.4.4 View-Verzeichnis
374
10.5 Fremdmodule
375
10.5.1 ZendDeveloperTools
375
10.5.2 SanSessionToolbar
376
10.5.3 BjyProfiler
376
10.5.4 AssetManager
377
10.6 Übung
378
11 Controller und View
381
11.1 Einleitung
381
11.1.1 Problemstellung
381
11.1.2 Komponenten
382
11.2 Module erstellen und konfigurieren
382
11.2.1 Benötigte Funktionen ermitteln
383
11.2.2 Funktionen auf Module aufteilen, Schritt 1
383
11.2.3 Funktionen auf Module aufteilen, Schritt 2
384
11.2.4 Module anlegen und konfigurieren
386
11.3 Routing konfigurieren
389
11.3.1 Routen für die Module erstellen
389
11.3.2 Routen-Konfiguration testen
394
11.4 Action-Controller anlegen
395
11.4.1 Repository für Annoncen
395
11.4.2 Controller für die Ausgabe von Annoncen
399
11.4.3 Weitere Controller
405
11.5 Templates erstellen
406
11.5.1 Controller überarbeiten
407
11.5.2 Templates einrichten
408
11.5.3 Templates konfigurieren
414
11.5.4 Ausgabe kontrollieren
416
11.6 Paginierung hinzufügen
418
11.6.1 Repository anpassen
418
11.6.2 Template für Seitennavigation erstellen
420
11.6.3 Seitennavigation in Templates integrieren
422
11.7 Navigation hinzufügen
423
11.7.1 Ausgabe der Navigation im Seitenkopf
424
11.7.2 Navigationselemente in Modulen konfigurieren
424
11.8 Zusammenfassung
427
11.9 Übung
428
12 Model-Layer implementieren
431
12.1 Einleitung
431
12.1.1 Problemstellung
431
12.1.2 Komponenten
432
12.1.3 Vorbereitungen
433
12.2 Model-Layer definieren
433
12.3 Entitäten implementieren
434
12.3.1 Entitäten, Beziehungen und Module
435
12.3.2 Entität für Unternehmen
436
12.3.3 Entität für Annoncen
440
12.4 Hydratoren implementieren
444
12.4.1 Hydrator erstellen
444
12.4.2 Vorhandene Hydrator-Strategies verwenden
447
12.4.3 Neue Hydrator-Strategy implementieren
449
12.5 Storage mit Table-Gateway umsetzen
453
12.5.1 Datenbank einrichten
453
12.5.2 Datenbankadapter konfigurieren
454
12.5.3 Storage-Interface definieren
455
12.5.4 Storage für Annoncen implementieren
456
12.5.5 Factory für »AdvertDbStorage« erstellen
462
12.5.6 Storage testweise einsetzen
464
12.5.7 Storage für Unternehmen
466
12.6 Repository und Templates überarbeiten
467
12.6.1 Storage im Repository verwenden
467
12.6.2 Factory für Repository anpassen
469
12.6.3 Templates anpassen
470
12.7 Zusammenfassung
471
12.8 Übung
472
13 Formularverarbeitung im MVC
475
13.1 Einleitung
475
13.1.1 Problemstellung
475
13.1.2 Komponenten
477
13.2 Vorbereitungen
477
13.2.1 Entitäten erweitern
477
13.2.2 Storages erweitern
478
13.2.3 Repositorys erweitern
480
13.2.4 Weitere Veränderungen
482
13.3 Input-Filter erstellen
482
13.3.1 Input-Filter für Annoncen
483
13.3.2 Input-Filter konfigurieren
487
13.3.3 Input-Filter für Unternehmen
489
13.4 Formulare implementieren
489
13.4.1 Formular für Annoncen
489
13.4.2 Formular konfigurieren
496
13.4.3 Formular für Unternehmen
500
13.5 Formulare ausgeben
502
13.5.1 Formular an den View übergeben
502
13.5.2 Formular im View ausgeben
506
13.5.3 Genehmigen, Sperren und Löschen im View vorbereiten
511
13.5.4 Formular für Unternehmen ausgeben
513
13.6 Formulare verarbeiten
513
13.6.1 Flash-Messenger einrichten
513
13.6.2 Neue Annoncen speichern
514
13.6.3 Bestehende Annoncen speichern
517
13.6.4 Bestehende Annoncen löschen, genehmigen und sperren
519
13.6.5 Formularverarbeitung für Unternehmen
521
13.7 HTML-Eingaben ermöglichen
522
13.7.1 CKEditor einsetzen
522
13.7.2 HTML Purifier einsetzen
526
13.8 Dateiuploads implementieren
529
13.8.1 Input-Filter anpassen
530
13.8.2 Neuen Filter für Logos erstellen
532
13.8.3 Formular anpassen
533
13.8.4 Controller überarbeiten
537
13.9 Ausgabe vereinfachen
539
13.9.1 Ausgabe der Formulare vereinfachen
540
13.9.2 Ausgabe der Seitenüberschrift vereinfachen
541
13.10 Zusammenfassung
542
13.11 Übung
542
14 Internationalisierung im MVC
545
14.1 Einleitung
545
14.1.1 Problemstellung
545
14.1.2 Komponenten
546
14.2 Routing überarbeiten und Locale setzen
547
14.2.1 Routing anpassen
547
14.2.2 Locale per Event-Listener setzen
550
14.3 Texte übersetzen
555
14.3.1 Translator konfigurieren
556
14.3.2 Übersetzungsdateien erstellen
557
14.3.3 Texte in Templates übersetzen
559
14.3.4 Texte in Input-Filtern übersetzen
562
14.3.5 Texte in Formularen übersetzen
564
14.3.6 Texte in Controllern übersetzen
567
14.3.7 Texte in der Navigation übersetzen
568
14.4 Datum und Uhrzeiten ausgeben
569
14.5 Sprachwechsler einfügen
570
14.6 Zusammenfassung
572
14.7 Übung
573
15 Authentifizierung und Autorisierung im MVC
575
15.1 Einleitung
575
15.1.1 Problemstellung
575
15.1.2 Komponenten
576
15.1.3 Vorbereitungen
577
15.1.4 Abstrakte Formulare mit abstrakter Factory
579
15.1.5 Abstrakte Factory für View-Helper
584
15.2 Benutzerrechte definieren
586
15.2.1 Vorüberlegungen
587
15.2.2 Benutzerrollen definieren
587
15.2.3 Ressourcen und Privilegien definieren
589
15.2.4 ACL konfigurieren
591
15.2.5 Konfiguration für Benutzerrechte erstellen
594
15.3 Sessions konfigurieren
597
15.4 Benutzer authentifizieren
600
15.4.1 Vorüberlegungen
600
15.4.2 Authentifizierungsservice mit Adapter konfigurieren
602
15.4.3 Event-Listener für Authentifizierung implementieren
605
15.4.4 Event-Listener konfigurieren
612
15.4.5 Event-Listener registrieren
613
15.4.6 Anpassungen in Controller und Views
616
15.5 Benutzer autorisieren
618
15.5.1 Event-Listener für Autorisierung erstellen
620
15.5.2 Event-Listener konfigurieren und registrieren
623
15.5.3 Event-Listener registrieren
624
15.6 Menü durch Benutzerrechte einschränken
626
15.6.1 Event-Listener für Autorisierung erweitern
626
15.6.2 Konfiguration für Navigation erweitern
629
15.6.3 Menüausgabe prüfen
630
15.7 User-Widget einbauen
632
15.7.1 View-Helper erstellen
632
15.7.2 View-Helper-Template
633
15.7.3 View-Helper konfigurieren
634
15.7.4 User-Widget ins Layout einbauen
636
15.8 Zusammenfassung
638
15.9 Übung
638
16 Tests für MVC-Anwendungen
641
16.1 Einleitung
641
16.1.1 Problemstellung
642
16.1.2 Komponenten
642
16.1.3 Vorbereitungen
643
16.2 Modulklassen testen
644
16.3 Event-Listener testen
647
16.3.1 »I18nListener« testen
648
16.3.2 »AuthorizationListener« testen
657
16.3.3 Weitere Event-Listener testen
666
16.4 Integrationstests für Controller schreiben
667
16.4.1 DbUnit und Zend\Test kombinieren
669
16.4.2 Datenbank mit Testdaten einrichten
674
16.4.3 Controller für Startseite testen
675
16.4.4 Controller für Anzeige von Annoncen testen
682
16.4.5 Controller für Pflege von Annoncen testen
689
16.5 Weitere Klassen testen
699
16.6 Zusammenfassung
700
16.7 Übung
701
Teil IV Weitere Themen
703
17 Migration vom ZF2 und ZF1
705
17.1 Migration – eine Einführung
705
17.2 Migration vom ZF2 zum ZF3
708
17.2.1 Checkliste für Migration vom ZF2 zum ZF3
709
17.2.2 Bereits migrierte ZF3-Komponenten
709
17.2.3 MVC-Komponente
710
17.2.4 Service-Manager
713
17.2.5 Event-Manager
719
17.2.6 Weitere Komponenten
720
17.2.7 Zend-Framework-Meta-Package
721
17.2.8 Zend-Framework-Anwendung migrieren
723
17.3 Migration vom ZF1 zum ZF3
726
17.3.1 Checkliste für Migration vom ZF1 zum ZF3
728
17.3.2 Wesentliche Änderungen zwischen ZF1 und ZF3
729
17.3.3 Vorbereitungen in der ZF1-Anwendung treffen
730
17.3.4 Neue Struktur für den parallelen Betrieb von ZF1 und ZF3
732
17.3.5 Parallele Front-Controller betreiben
735
17.3.6 Anwendungskonfiguration migrieren
736
17.3.7 MVC migrieren
737
17.3.8 Model-Layer migrieren
742
17.3.9 Weitere Komponenten migrieren
744
17.3.10 Alte ZF1-Anwendung entfernen
745
17.4 Migration von MVC zur Middleware
746
17.4.1 Checkliste für Migration von MVC zur Middleware
748
17.4.2 Config-Provider für Module einrichten
748
17.4.3 Anwendungskonfiguration migrieren
750
17.4.4 Composer-Konfiguration anpassen
751
17.4.5 Von Controllern zu Aktions-Middleware migrieren
752
17.4.6 Routing migrieren
756
17.4.7 Templates verschieben und anpassen
759
17.4.8 Front-Controller anpassen
760
17.4.9 Event-Listener zu Pipeline-Middleware migrieren
760
17.5 Zusammenfassung
761
18 Webservices und Apigility
763
18.1 Einführung: RESTful Webservice
763
18.2 RESTful Webservice mit Zend\Mvc implementieren
765
18.2.1 JSON als Rückgabe erlauben
765
18.2.2 Neues Modul anlegen und Routing konfigurieren
766
18.2.3 RESTful Controller einrichten
769
18.2.4 RESTful Webservice testen
776
18.3 RESTful Webservice mit Zend\Expressive umsetzen
778
18.3.1 Modul anlegen und konfigurieren
778
18.3.2 Routen und Middleware konfigurieren
779
18.3.3 Aktions-Middleware für »GET« und »POST«
781
18.3.4 Zusammenfassung
785
18.4 RESTful Webservice mit Apigility implementieren
785
18.4.1 Datenbankgestützte REST API erstellen
786
18.4.2 REST API mit Postman testen
788
18.4.3 Weitere Möglichkeiten mit Apigility
791
18.5 Zusammenfassung
791
19 Konsolenanwendungen
793
19.1 Komponenten
794
19.2 Vorbereitungen
794
19.3 Einführung in ZF\Console
795
19.4 Abstrakte Command-Klasse
796
19.5 Befehl zum Prüfen des Datenbankadapters
798
19.6 Befehl zum Anzeigen der Datenbanktabellen
800
19.7 Generator für Entitätsklassen
802
19.8 Befehl zum Anlegen einer Entität
807
19.9 Zusammenfassung
813
Teil V Komponenten
815
20 Zend-Framework-Komponenten
817
20.1 Zend\Authentication
818
20.1.1 Authentifizierungsadapter
818
20.1.2 Authentifizierungsservice
819
20.1.3 Identität speichern
821
20.2 Zend\Cache
822
20.2.1 Cache-Storage konfigurieren
823
20.2.2 Cache-Pattern einsetzen
824
20.3 Zend\Code
825
20.4 Zend\Config
827
20.4.1 Lesen von Konfigurationsdateien
828
20.4.2 Schreiben von Konfigurationsdateien
829
20.5 Zend\Console
830
20.5.1 Konsolen-Route konfigurieren
830
20.5.2 Konsolen-Controller mit Prompts verwenden
831
20.6 Zend\Db
832
20.6.1 Zend\Db\Adapter
832
20.6.2 Zend\Db\ResultSet
833
20.6.3 Zend\Db\Sql
834
20.6.4 Zend\Db\TableGateway
838
20.7 Zend\Diactoros
841
20.8 Zend\EventManager
842
20.8.1 Event-Manager in Klasse einsetzen
843
20.8.2 Event-Listener erstellen
844
20.8.3 Event-Listener und Klasse kombinieren
846
20.9 Zend\Expressive
846
20.9.1 Unterstützte Komponenten
847
20.9.2 Installer für Zend\Expressive
848
20.10 Zend\Filter
848
20.10.1 Filter direkt einsetzen
849
20.10.2 Statischen Filter einsetzen
850
20.10.3 Filterketten einsetzen
850
20.10.4 Filter für Komprimierung und Verschlüsselung einsetzen
851
20.11 Zend\Form
851
20.11.1 Formular programmatisch generieren
852
20.11.2 Fieldsets erstellen
853
20.11.3 Formular per Factory erstellen
853
20.11.4 Formulare ausgeben
855
20.12 Zend\Hydrator
857
20.12.1 Hydratoren einsetzen
857
20.12.2 Hydrator-Strategies einsetzen
860
20.13 Zend\I18n
861
20.13.1 Translator einsetzen
861
20.13.2 Ausgaben per View-Helper
864
20.14 Zend\InputFilter
864
20.14.1 Input-Filter definieren
865
20.14.2 Mit Input-Filter Eingaben validieren
866
20.14.3 Input-Filter hierarchisch aufbauen
867
20.15 Zend\ModuleManager
868
20.15.1 Vorgaben für Module
869
20.15.2 Feature-Interfaces für Modulklassen
869
20.15.3 Konfiguration für Modul-Manager
871
20.16 Zend\Mvc
873
20.16.1 Teilkomponenten
874
20.16.2 Eventbasierter MVC-Prozess
875
20.17 Zend\Navigation
876
20.17.1 Konfiguration für Zend\Navigation
877
20.17.2 Ausgabe einer Navigation
878
20.18 Zend\Paginator
878
20.18.1 Adapter für Zend\Paginator
878
20.18.2 Vorgehensweise beim Einsatz
879
20.18.3 Anbindung an eine Datenbank
879
20.19 Zend\Permissions\Acl
881
20.19.1 Aufbau eines ACL-Objekts
881
20.19.2 Rechte mit einem ACL-Objekt abfragen
882
20.20 Zend\Permissions\Rbac
883
20.20.1 Aufbau eines RBAC-Objekts
884
20.20.2 Rechte in einem RBAC-Objekt abfragen
885
20.21 Zend\ServiceManager
886
20.21.1 Konfiguration
886
20.21.2 Factorys für Services
888
20.21.3 Spezialisierte Service-Manager
890
20.22 Zend\Session
891
20.22.1 Session-Container nutzen
891
20.22.2 Session-Konfiguration
892
20.23 Zend\Stratigility
893
20.23.1 Middleware-Pipeline
893
20.24 Zend\Test
895
20.25 Zend\Validator
896
20.25.1 Validatoren direkt einsetzen
897
20.25.2 Statischen Validator einsetzen
897
20.25.3 Validatorketten einsetzen
898
20.25.4 Fehlermeldungen anpassen
898
20.26 Zend\View
899
20.26.1 Templates erstellen
899
20.26.2 Template verarbeiten und ausgeben
900
20.26.3 Alternativ JSON ausgeben
902
20.26.4 View-Helper einsetzen
902
20.27 Composer-Plug-in Zend\ComponentInstaller
903
20.27.1 Installation in Zend\Expressive-Anwendung
903
20.27.2 Installation in Zend\Mvc-Anwendung
904
20.28 Weitere Komponenten
904
Anhang
907
A Objektorientierte Programmierung in PHP
909
A.1 Grundbegriffe
909
A.2 Vererbung
911
A.3 Interfaces
912
A.4 Traits
912
A.5 Weitere Begriffe
914
B Architekturmuster und Entwurfsmuster
915
B.1 Architekturmuster
915
B.2 Entwurfsmuster
920
C Unit-Testing mit PHPUnit
929
C.1 PHPUnit installieren
929
C.2 Tests einrichten für PHPUnit
930
C.3 Einfache Tests schreiben mit PHPUnit
931
C.4 Data-Provider mit PHPUnit verwenden
934
C.5 Exceptions mit PHPUnit testen
936
C.6 Mock-Objekte mit Prophecy und PHPUnit einsetzen
937
C.7 Tests ausführen für PHPUnit
941
C.8 Weitere Möglichkeiten mit PHPUnit
942
D Zend Framework 3 und Doctrine
943
D.1 Einführung zu Doctrine
943
D.2 Doctrine 2 oder Zend\Db
944
D.3 Doctrine-Module für das Zend Framework
945
D.4 Weitere Hinweise zur Integration
948
Index
951