Carsten Möhrke Besser PHP programmieren Handbuch professioneller PHP-Techniken Galileo Press
Vorwort zur dritten Auflage ц JjlJlli!fJÜIj SI!IS* 1.1 Lernen Sie Ihr Arbeitsgerät kennen 13 1.2 Der Editor, 15 1.3 Eclipse mit PDT 17 1.3.1 Der Editor 19 1.3.2 Konfiguration 26 1.4 Zend Studio for Eclipse 28 2.1 Datentypen in PHP 29 2.1.1 Boolean 29 2.1.2 Integer 30 2.1.3 Float 30 2.1.4 String 34 2.2 Typkonvertierung 38 2.3 Arrays 41 2.3.1 Allgemeines zu Arrays 41 2.3.2 Vergleich von Arrays 42 2.3.3 Ausgabe von Arrays 43 2.3.4 Kombinieren von Arrays 47 2.3.5 Verarbeiten von Arrays 49 2.3.6 Übereinstimmungen und Unterschiede in Arrays 56 * * ' I Vgl Ulf lllllvl Э»Hirt HI I 1#Щр р«^ 1111М!Щ^ ««iililt<ta>*iimj 3.1 HTML in PHP oder PHP in HTML? 60 3.1.1 Template-Systeme 63 3.2 Allgemeines zur Programmierung 65 3.2.1 Verständlichkeit 65 3.2.2 Alternative PHP-Syntax 67 3.2.3 Kommentare 68 3.2.4 Vermeiden Sie»Magic Numbers«71 3.2.5 ToDos, Fallstricke und andere Probleme 72 3.2.6 Halten Sie Ordnung 73
3.3 Quelltextformatierung 74 3.3.1 Globale Struktur 74 3.3.2 Klammerung 75 3.3.3 Einrückungen 77 3.3.4 Verschachtelte Funktionsaufrufe 77 3.3.5 SQL und JavaScript 78 3.3.6 Komplexe Bedingungen 79 3.4 Namensgebung 80 3.4.1 Abkürzungen 81 3.4.2 Namen für Variablen und Konstanten 82 3.4.3 Namen für Funktionen und Klassen 84 3.5 Kontrollstrukturen 86 3.5.1 Bedingungen 86 3.5.2 Fallunterscheidungen 92 3.5.3 Der ternäre Operator 95 3.5.4 Die Arbeit mit Schleifen 97 3.5.5 Die Sache mit dem goto 100 3.6 Is it a bug or is it a feature? 101 3.6.1 Die Inkrement-Operatoren 102 3.6.2 Die Funktion emptyo ЮЗ 3.6.3 Groß-/Kleinschreibung 104 3.6.4 Parameter von Funktionen 105 3.6.5 Neue PHP-Versionen 106 3.7 Der PEAR-Coding-Standard (PCS) 107 3.7.1 Einrücken und Zeilenlänge 107 3.7.2 Kontrollstrukturen 107 3.7.3 Funktionsaufrufe 108 3.7.4 Funktionsdeklaration 108 3.7.5 Kommentare und Dokumentation 109 3.7.6 Code einbinden 109 3.7.7 PHP-Tags 109 3.7.8 Namenskonventionen 109 3.7.9 Dateiformat 110 4.1 Arbeiten mit externen Bibliotheken 111 4.2 Funktionen 114 4.2.1 Design von Funktionen und Methoden 117 4.3 Objektorientierung 124 4.3.1 Zugriff auf Objekte 126 6
4.3.2 Deklaration von Klassen 127 4.3.3 Fortgeschrittene objektorientierte Programmierung 148 4.3.4 Entwurfsmuster 183 э сггиг nanuung * ятя»и*,.«,» 2091 5.1 5.2 5.3 5.4 5.5 Der -Operator 215 Eigene Error Handler 216 5.2.1 Anderer Leute Fehler 221 5.2.2 Fehlermanagement 223 Error Handling in Bibliotheken 232 5.3.1 Error Handling bei Funktionsbibliotheken ; 233 5.3.2 Error Handling in Klassenbibliotheken 237 Exception Handling 242 Fehlerdokumente 247 - «^«Professionelle Bibliotheke^&?^^b;*^*ft 6.1 Smarty 256 6.1.1 Modifikatoren 265 6.1.2 Funktionen 273 6.1.3 Caching 280 6.2 Frameworks 282 6.2.1 Auswahl eines Frameworks 282 6.2.2 PEAR 289 6.2.3 Installation 289 6.2.4 Nutzung von PEAR 293 6.2.5 Fehlerbehandlung in PEAR 295 6.2.6 Paket Spreadsheet_Excel_Writer 296 6.2.7 Zend Framework 306 6.2.8 Der Front Controller 314 6.2.9 Der Action Controller 315 6.2.10 Nutzung von Views 318 6.2.11 Die Mitspieler im Einzelnen 321 6.2.12 Übergabe von Werten 321 6.2.13 Error Handling 325 6.2.14 Hilfreiche Techniken 329 6.2.15 Das Model 331 7
7.1 Im Vorfeld 7.2 Qualitätsmerkmale 7.3 Reviews 7.4 Debugging зб9 371 372 374 7.4.1 PHP-interne Debug-Features 374 7.4.2 Eigene Debug-Routinen 7.4.3 Debugging mit PHPUnit 384 7.4.4 Professionelle Debugger 7.4.5 Testen mit Selenium 403 7.4.6 Lasttests 410 7.5 Testen 418 7.5.1 Personal 418 7.5.2 Vorgehensweise 420 379 395 8.1 Anforderungen an eine Dokumentation 422 8.2 Programmablaufpläne und Struktogramme 425 8.3 phpdocumentor 8.3.1 Die wichtigsten Tags 8.3.2 Kommandozeilenoptionen 43^ 437 443 9.1 Elementare Datenstrukturen und Algorithmen 445 9.1.1 Mengen 9.1.2 Queues 9.1.3 Stacks 9.1.4 Verkettete Listen 9.1.5 Bäume und Rekursionen 9.1.6 Nested Sets 9.2 Zeichensätze 9.2.1 Warum eigentlich Zeichensätze? 9.2.2 Die Geschichte der Zeichensätze 9.2.3 Zeichensätze bei Webseiten 9.2.4 PHP und Zeichensätze 9.2.5 MySQL und Zeichensätze 445 447 448 448 454 467 473 474 4 75 4 80 4 83 4 91 8
9.3 Interaktion mit Benutzern 494 9.3.1 Aufbau von Formularen 495 9.3.2 Wertübernahme aus Formularen 498 9.3.3 Mehrfaches Abschicken von Formularen 502 9.3.4 Prüfen von Benutzereingaben 505 9.3.5 Formulare mit Flash 510 9.4 Reguläre Ausdrücke 535 9.4.1 Delimiter 537 9.4.2 Zeichenklassen 538 9.4.3 Quantifier 540 9.4.4 Anker 541 9.4.5 Submuster 542 9.4.6 Backreferences 543 9.4.7 Lookaround 544 9.4.8 Bedingte Ausdrücke 546 9.4.9 Gier 547 9.4.10 Optionen 548 9.4.11 PCRE-Funktionen 549 9.5 Arbeit mit Dateien 554 9.5.1 Unterschiede bei Dateien 555 9.5.2 CSV-Dateien 560 9.5.3 Locks auf Dateien 565 i 9.6 E-Mails 570 9.6.1 Allgemeines zu E-Mails 571 9.6.2 Empfänger der Mail 573 9.6.3 Header-Felder 573 9.6.4 MIME-Mails 578 9.6.5 Anhänge komprimieren 589 9.6.6 Mails verschlüsseln 591 9.7 Sicherheit 598 9.7.1 Bleiben Sie auf dem Laufenden 600 9.7.2 Fertige Lösungen 600 9.7.3 Sessions 602 9.7.4 Globals 612 9.7.5 Verschiedene Angriffsarten 618 9.7.6 Passwörter 643 9.7.7 CAPTCHAs 651 9.7.8 Altersüberprüfung 660 9.7.9 Schutz von E-Mail-Adressen 666 9.8 Shared Memory 670 9
9.9 Installationsprogramme 682 9.9.1 Installationsvoraussetzungen 682 9.9.2 Übernahme von Werten 689 9.9.3 Konfigurationsdateien 691 9.9.4 Installation von Komponenten 694 9.9.5 Tabellen 698 9.9.6 Serverzeit 701 9.9.7 Grafiken 707 9.9.8 Uninstall 710 9.10 Internationalisierung/Lokalisierung 713 9.10.1 Mehrsprachige Texte 713 9.10.2 Datums- und Zahlenformate 716 9.11 Performance-Tuning 721 9.11.1 Performancebremsen finden 726 9.11.2 Stringverarbeitung 737 9.11.3 Statische Seiten generieren 739 9.11.4 Datenbankabfragen 744 9.11.5 Cache-Systeme 749 9.12 Genau rechnen 757 9.12.1 BCMath 758 9.13 Arbeit mit Datenbanken 760 9.13.1 Allgemeines 760 9.13.2 Transaktionsorientierung 770 9.13.3 phpmyadmin 772 9.13.4 ODBC 777 9.13.5 Volltextsuche in einer MySQL-Datenbank 782 9.13.6 Datenbankperformance 784 9.13.7 Stored Procedures, Stored Functions und Trigger 796 Inhalt der DVD 813 Index 815 10