Rob Allen, Nick Lo, Steven Brown
ZEND Framework im Einsatz
Inhalt
6
Vorwort
14
Über dieses Buch
18
Für wen ist dieses Buch gedacht?
18
Weitere Informationen über das Zend Framework
19
Roadmap
19
Codekonventionen und Downloads
21
Author Online
21
Über die Buchreihe
22
Teil I – Die Grundlagen
24
1 Das Zend Framework –Eine Einführung
26
1.1 Die Struktur von PHP-Websites
27
1.2 Gründe für das Zend Framework
29
1.2.1 Alles ist gleich out of the box vorhanden
29
1.2.2 Modernes Design
30
1.2.3 Leicht zu erlernen
30
1.2.4 Vollständige Dokumentation
31
1.2.5 Einfachere Entwicklung
32
1.2.6 Schnelle Entwicklung
32
1.2.7 Strukturierter, leicht zu pflegender Code
32
1.3 Was ist das Zend Framework?
33
1.3.1 Woher stammt das Framework?
33
1.3.2 Was ist darin enthalten?
34
1.4 Die Designphilosophie des Zend Frameworks
40
1.4.1 Komponenten von hoher Qualität
40
1.4.2 Pragmatismus und Flexibilität
41
1.4.3 Saubere Klärung der Rechte auf geistiges Eigentum
41
1.4.4 Support von Zend Technologies
41
1.5 Alternative PHP-Frameworks
42
1.6 Zusammenfassung
43
2 Hello Zend Framework!
44
2.1 Das Designpattern Model-View-Controller
45
2.1.1 Das Model
46
2.1.2 Die View
46
2.1.3 Der Controller
46
2.2 Die Anatomie einer Zend Framework-Applikation
47
2.2.1 Das Verzeichnis application
47
2.2.2 Das Verzeichnis library
48
2.2.3 Das Verzeichnis tests
48
2.2.4 Das Verzeichnis public
48
2.3 Hello World: Datei für Datei
49
2.3.1 Bootstrapping
49
2.3.2 Apache .htaccess
51
2.3.3 Index-Controller
52
2.3.4 View-Template
53
2.4 Wie MVC im Zend Framework angewendet wird
55
2.4.1 Der Controller im Zend Framework
56
2.4.2 Arbeit mit dem Zend_View
60
2.4.3 Das Model in MVC
64
2.5 Zusammenfassung
68
Teil II – Eine Basisapplikation
70
3 Websites mit dem ZendFramework erstellen
72
3.1 Erste Planungsarbeiten für eine Website
73
3.1.1 Die Ziel der Site
73
3.1.2 Das Design der Benutzerschnittstelle
75
3.1.3 Den Code planen
77
3.2 Die ersten Programmzeilen
78
3.2.1 Die Verzeichnisstruktur
78
3.2.2 Die Bootstrap-Klasse
79
3.2.3 Der Start der Applikation
84
3.3 Die Homepage
84
3.3.1 Die grundlegenden Models
85
3.3.2 Tests der Models
87
3.3.3 Der Homepage-Controller
90
3.4 Zusammenfassung
95
4 Die View erstellen
96
4.1 Die Patterns Two-Step-View und Composite-View
97
4.2 Zend_Layout und die Arbeit mit Views
98
4.3 Die Integration von Zend_Layout in Places
99
4.3.1 Setup
99
4.3.2 Layout-Skripte
101
4.3.3 Allgemeine Actions anhand von Platzhaltern
105
4.3.4 Das View-Skript für die Homepage
109
4.4 Fortgeschrittene View-Hilfsklassen
111
4.4.1 Die Integration von Controllern
112
4.4.2 Die Verwaltung der View-Skripte
114
4.4.3 Hilfsklassen für HTML-Kopfzeilen
115
4.5 Zusammenfassung
120
5 Ajax
122
5.1 Kurze Einführung in Ajax
122
5.1.1 Definition von Ajax
123
5.1.2 Ajax in Webapplikationen
124
5.2 Ein einfache Beispiel für Ajax
126
5.3 Die Arbeit mit Client-Libraries für Ajax
129
5.4 Ajax im Zend Framework
131
5.4.1 Der Controller
132
5.4.2 Die View
133
5.5 Integration in eine Zend Framework-Applikation
134
5.5.1 Der Place-Controller
135
5.5.2 Das View-Skript mit HTML fürs Rating ergänzen
137
5.5.3 JavaScript in die View-Skripte einbauen
138
5.5.4 Der Server-Code
141
5.6 Zusammenfassung
143
6 Mit der Datenbank arbeiten
144
6.1 Datenbankabstraktion mit Zend_Db_Adapter
144
6.1.1 Einen Zend_Db_Adapter erstellen
145
6.1.2 Die Datenbankabfrage
146
6.1.3 Einfügen, Aktualisieren und Löschen
147
6.1.4 Spezifische Unterschiede zwischen den Datenbanken
149
6.2 Tabellenabstraktion mit Zend_Db_Table
149
6.2.1 Was ist das Table-Data-Gateway-Pattern?
150
6.2.2 Die Arbeit mit Zend_Db_Table
151
6.2.3 Einfügen und Aktualisieren mit Zend_Db_Table
152
6.2.4 Einträge mit Zend_Db_Table löschen
154
6.3 Zend_Db_Table als Model
155
6.3.1 Das Model testen
157
6.3.2 Tabellenbeziehungen mit Zend_Db_Table
162
6.4 Zusammenfassung
166
7 Benutzerauthentifizierung undZugriffskontrolle
168
7.1 Benutzerauthentifizierung und Zugriffskontrolle
168
7.1.1 Was ist Authentifizierung?
169
7.1.2 Was ist Zugriffskontrolle?
169
7.2 Die Implementierung der Authentifizierung
170
7.2.1 Die Komponente Zend_Auth
170
7.2.2 Einloggen über die HTTP-Authentifizierung
171
7.3 Zend_Auth in einer echten Applikation
174
7.3.1 Das Einloggen
174
7.3.2 Eine Begrüßungsnachricht in der View-Hilfsklasse
178
7.3.3 Das Ausloggen
179
7.4 Die Implementierung der Zugriffskontrolle
180
7.4.1 Die Arbeit mit Zend_Acl
181
7.4.2 Die Konfiguration eines Zend_Acl-Objekts
183
7.4.3 Das Zend_Acl-Objekt prüfen
184
7.5 Zusammenfassung
188
8 Formulare
190
8.1 Die Arbeit mit Zend_Form
191
8.1.1 Integrierte Datenfilter und Validatoren
191
8.1.2 Integrierte Fehlerbehandlung
194
8.1.3 Dekoratoren zur Vereinfachung des Markups
194
8.1.4 Plug-in-Loader zur eigenen Anpassung
195
8.1.5 Internationalisierung
196
8.1.6 Unterformulare und Displaygroups
196
8.2 Ein Login-Formular erstellen
197
8.2.1 Pfade einrichten
197
8.2.2 Das Formular-View-Skript
197
8.2.3 Aktualisierung der Controller-Action AuthController
198
8.2.4 Die Basisklasse für das Login-Formular
200
8.3 Filtern und Validieren
201
8.3.1 Einfaches Filtern und Validieren
201
8.3.2 Eigene Fehlermeldungen
202
8.3.3 Die Internationalisierung des Formulars
203
8.3.4 Selbst erstellte Validatoren
205
8.4 Die Dekoration des Login-Formulars
207
8.4.1 Standarddekoratoren von Zend_Form
207
8.4.2 Eigene Dekoratoren setzen
207
8.5 Zusammenfassung
211
9 Suchfunktionen
212
9.1 Die Vorteile einer Suchfunktion
212
9.1.1 Zentrale Usability-Probleme der User
213
9.1.2 Die Rangliste der Resultate ist wichtig
213
9.2 Die Komponente Zend_Search_Lucene
213
9.2.1 Einen separaten Suchindex für Ihre Website erstellen
214
9.2.2 Leistungsfähige Abfragen
216
9.2.3 Best Practices
221
9.3 Eine Suchfunktion für Places
222
9.3.1 Indexaktualisierung bei neu eingefügten Inhalten
223
9.3.2 Erstellen des Suchformulars und Darstellung der Ergebnisse
232
9.4 Zusammenfassung
235
10 E-Mails
236
10.1 Die Grundlagen von E-Mails
236
10.1.1 E-Mails – einfach dargestellt
237
10.1.2 Analyse einer E-Mail-Adresse
238
10.2 Die Arbeit mit Zend_Mail
238
10.2.1 E-Mails mit Zend_Mail erstellen
239
10.2.2 E-Mails mit Zend_Mail versenden
240
10.3 Einen Support-Tracker für Places erstellen
243
10.3.1 Die Applikation entwerfen
243
10.3.2 Integration von Zend_Mail in die Applikation
247
10.3.3 Header in der Support-E-Mail einfügen
249
10.3.4 Attachments an Support-E-Mails anhängen
250
10.3.5 Formatierung der E-Mail
251
10.4 Lesen von E-Mails
254
10.4.1 Abholen und Speichern von E-Mails
254
10.4.2 E-Mails mit der Applikation lesen
255
10.5 Zusammenfassung
259
11 Deployment
260
11.1 Den Server einrichten
260
11.1.1 Designen für verschiedene Umgebungen
261
11.1.2 Die Arbeit mit virtuellen Hosts in der Entwicklung
264
11.2 Versionskontrolle mit Subversion
266
11.2.1 Erstellen des Subversion-Repositorys
266
11.2.2 Code aus dem Repository auschecken
267
11.2.3 Änderungen ins Repository committen
268
11.2.4 Aktualisierung einer lokalen Arbeitskopie
269
11.2.5 Der Umgang mit Konflikten
270
11.2.6 Eine saubere Kopie aus dem Repository holen
272
11.2.7 Die Arbeit mit Branches
272
11.2.8 Externer Code
273
11.3 Funktionale Tests
273
11.3.1 Funktionales Testen mit Selenium IDE
274
11.3.2 Automatisierung der Selenium IDE-Tests
277
11.3.3 Funktionstests mit Zend_Http_Client
278
11.4 Das Skripting des Deployments
280
11.5 Zusammenfassung
281
Teil III – Machen Sie IhreApplikation leistungsfähiger
282
12 Der Austausch mitanderen Applikationen
284
12.1 Die Integration von Applikationen
285
12.1.1 Austausch strukturierter Daten
285
12.1.2 Produktion und Verarbeitung strukturierter Daten
286
12.1.3 Wie Webservices arbeiten
287
12.1.4 Aufgabengebiete für Webservices
288
12.2 Die Produktion und Verarbeitung von Feeds mitZend_Feed
289
12.2.1 Die Produktion eines Feeds
289
12.2.2 Die Verarbeitung eines Feeds
291
12.3 RPCs mit Zend_XmlRpc erstellen
292
12.3.1 Die Arbeit mit Zend_XmlRpc_Server
293
12.3.2 Die Arbeit mit Zend_XmlRpc_Client
301
12.4 Die Nutzung von REST-Webservices mit Zend_Rest
302
12.4.1 Was ist REST?
303
12.4.2 Die Arbeit mit Zend_Rest_Client
304
12.4.3 Die Arbeit mit Zend_Rest_Server
307
12.5 Zusammenfassung
309
13 Mashups mit öffentlichenWebservices
310
13.1 Der Zugriff auf öffentliche Webservices
311
13.1.1 Zend_Gdata
311
13.1.2 Zend_Service_Akismet
313
13.1.3 Zend_Service_Amazon
314
13.1.4 Zend_Service_Audioscrobbler
314
13.1.5 Zend_Service_Delicious
314
13.1.6 Zend_Service_Flickr
315
13.1.7 Zend_Service_Gravatar
315
13.1.8 Zend_Service_Nirvanix
315
13.1.9 Zend_Service_RememberTheMilk
316
13.1.10 Zend_Service_Simpy
316
13.1.11 Zend_Service_SlideShare
316
13.1.12 Zend_Service_StrikeIron
316
13.1.13 Zend_Service_Technorati
317
13.1.14 Zend_Service_Yahoo
317
13.2 Werbeanzeigen mit Amazon-Webservices darstellen
318
13.2.1 Die Amazon-Model-Klasse
318
13.2.2 Die View-Hilfsklasse amazonAds
320
13.2.3 Die View-Hilfsklasse cachen
321
13.3 Darstellen von Flickr-Bildern
324
13.3.1 Die Flickr-Model-Klasse
324
13.3.2 Flickr in einem Action-Controller verwenden
326
13.4 Mit Zend_Gdata auf Google zugreifen
328
13.4.1 Die YouTube-API in einem Action-Controller
329
13.4.2 Die Seite für die Videokategorien
330
13.4.3 Die Seite mit den Videolisten
331
13.4.4 Die Video-Seite
333
13.5 Zusammenfassung
334
14 Das Caching beschleunigen
336
14.1 Die Vorteile des Cachings
337
14.2 Die Funktionsweise des Cachings
337
14.3 Die Implementierung von Zend_Cache
341
14.3.1 Die Zend_Cache-Frontends
342
14.3.2 Zend_Cache-Backends
353
14.4 Caching auf verschiedenen Ebenen der Applikation
355
14.4.1 Was in den Cache soll
355
14.4.2 Optimale Verfallszeit des Caches
355
14.5 Cache-Tags
356
14.6 Zusammenfassung
357
15 Internationalisierung undLokalisierung
358
15.1 Die Übersetzung in andere Sprachen und Idiome
358
15.1.1 Die Übersetzung in andere Sprachen
359
15.1.2 Die Übersetzung von Idiomen
360
15.2 Die Arbeit mit Zend_Locale und Zend_Translate
360
15.2.1 Die Locales mit Zend_Locale setzen
360
15.2.2 Übersetzung mit Zend_Translate
362
15.3 Eine zweite Sprache für die Places-Applikation
364
15.3.1 Die Auswahl der Sprache
365
15.3.2 Das Front-Controller-Plug-in LanguageSetup
368
15.3.3 Die View übersetzen
370
15.3.4 Datum mit Zend_Locale korrekt darstellen
372
15.4 Zusammenfassung
374
16 PDFs erstellen
376
16.1 Die Grundlagen von Zend_Pdf
377
16.1.1 Erstellen oder Laden von Dokumenten
377
16.1.2 Seiten im PDF-Dokument erstellen
377
16.1.3 Metainformationen im Dokument einfügen
378
16.1.4 Speichern des PDF-Dokuments
380
16.2 Einen PDF-Berichtsgenerator erstellen
380
16.2.1 Das Model für das Berichtsdokument
380
16.2.2 Das Model für die Berichtsseite
381
16.3 Text auf einer Seite zeichnen
383
16.3.1 Die Wahl der Fonts
383
16.3.2 Den Font setzen und Text einfügen
383
16.3.3 Umbrochenen Text einfügen
384
16.4 Die Arbeit mit Farben
386
16.4.1 Die Wahl der Farben
386
16.4.2 Farben einstellen
386
16.5 Die Arbeit mit Styles
387
16.6 Formen zeichnen
388
16.6.1 Linien zeichnen
388
16.6.2 Gestrichelte Linien setzen
388
16.6.3 Rechtecke und Polygone zeichnen
390
16.6.4 Das Zeichnen von Kreisen und Ellipsen
392
16.7 Objekte drehen
393
16.8 Bilder auf der Seite einfügen
394
16.9 Objekte mit Schnittmasken zeichnen
395
16.10 Generierung von PDF-Berichten
395
16.11 Zusammenfassung
397
A Die PHP-Syntax imSchnelldurchgang
398
A.1 PHP-Grundlagen
399
A.2 Variablen und Typen
400
A.3 Strings
401
A.3.1.1 Strings in einfachen Anführungszeichen
402
A.3.1.2 Strings in doppelten Anführungszeichen
402
A.3.1.3 Heredoc-Strings
403
A.3.1.4 Nowdoc-Strings
403
A.4 Arrays
404
A.5 Bedingungen und Schleifen
405
A.5.1 Bedingungen
405
A.5.2 Schleifen
406
A.6 Alternative Syntax für den verschachtelten Block
409
A.7 Funktionen
409
A.8 Zusammenfassung
410
B Objektorientiertes PHP
412
B.1 Objektorientierung in PHP
413
B.1.1 Klassen, Objekte und Vererbung
413
B.1.2 Erweitern von Klassen
416
B.1.3 Abstrakte Klassen und Interfaces
416
B.1.4 Magische Methoden
419
B.2 Die Standard PHP Library
422
B.2.1 Die Arbeit mit Iteratoren
422
B.2.2 Die Arbeit mit ArrayAccess und Countable
424
B.3 PHP4
425
B.4 Software-Designpatterns
425
B.4.1 Das Singleton-Designpattern
425
B.4.2 Das Registry-Designpattern
427
B.5 Zusammenfassung
429
C Tipps und Tricks
430
C.1 Tipps und Tricks für MVC
431
C.1.1 Module
431
C.1.2 Case Sensitivity
434
C.1.3 Routing
436
C.2 Diagnostik mit Zend_Log und Zend_Debug
439
C.2.1 Zend_Debug
439
C.2.2 Zend_Log
439
C.3 Zend_Db_Profiler
441
C.4 Zusammenfassung
444
Register
446
© 2009-2024 ciando GmbH