Matthias Kannengiesser. aktualisierte Auflage PHP5. irammierung. Mit 144 Abbildungen FRANZIS

Ähnliche Dokumente
Wie man die Theorie der Objektorientierung in Php (Php) versteht

PHP Programmierung. Seminarunterlage. Version 1.07 vom

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

PHP OOP, Design Patterns und UML. Marco Skulschus

Inhalt. Vorwort zur dritten Auflage 11

Objektorientierte Programmierung

Praxisbuch Objektorientierung

3. Stud.IP-Entwickler-Workshop 2. Juni 2006 Workshop 1a: Gib mir 5: Lohnt sich der Umstieg auf PHP5 und MySQL5? André Noack

Java-Grundkurs für Wirtschaftsinformatiker

Manfred Schüttengruber. Objektorientierte Programmierung mit Visual Basic 2005

PHP Programmierung. Seminarunterlage. Version 1.02 vom

Vorwort zur zweiten Auflage 1. Vorwort zur ersten Auflage 2

Inhaltsverzeichnis. Vorwort

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren...

Java-Grundkurs für rtschaftsinformatiker

Objektorientiertes Programmieren

Kompendium der Web-Programmierung

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

PHP objektorientiert

Objektorientiertes Programmieren in C++

Inhaltsverzeichnis. 4.9 Aufgaben... 63

Objektorientierte Programmierung mit Java

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

2 Anlegen und Konfigurieren von Datenbanken 35

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Christian Wenz, Tobias Hauser. PHP 5.6 und MySQL. Das umfassende Handbuch

Objekt-Funktionale Programmierung. am Beispiel von SCALA. Thorsten Jolitz

Besser PHP programmieren

jetzt lerne ich PHP 5 & MySQL 4.1 Der schnelle Einstieg in die objektorientierte

Das erwartet dich in diesem Buch 8. Kapitel 1 Aufbruch ins Programmierabenteuer 14

Rapid Java wie mit Forms

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Objektorientierte Anwendungsentwicklung

Grundkurs Software- Entwicklung mit C++

Kurs-Dokumentation. Zentrum für Informatik ZFI AG. Refresher Microsoft Access Programmierung (PA1P-0418) -IT Ausbildung nach Mass

Inhalt. TEIL I Grundlagen. Einleitung 15

in 21 Tagen Jesse Liberty Der optimale Weg - {Schritt für Schritt zum Programmierprofi

Auf einen Blick. TEIL I Vorbereitungen TEIL II Einstieg in PHP TEIL III Webtechniken TEIL IV Datenbanken...

Gliederung der Folien

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN:

Objektorientiert in C++

Inhaltsverzeichnis. 3.4 Sonderzeichen und Zeichenkodierung Verknüpfungen Links und Bilder... 46

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

Scriptsprachen für dynamische Webauftritte

Programmierung in C/C++

Inhaltsverzeichnis I Grundlagen...1 II Programmieren in C/C

PHP5. Schritt für Schritt zum Profi

Einführung 17. Teil I Einführung in die Anwendungsentwicklung 23. Kapitel 1 Erstellen eigener Anwendungen 25

Einführung in die objektorientierte Programmierung

Inhaltsverzeichnis. Teil 1 Grundlagen der Objektorientierung 29

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Die С ++-Programmiersprache

Objektorientierte Programmierung

Java als erste Programmiersprache

Auf einen Blick. TEIL I Vorbereitungen TEIL II Einstieg in PHP TEIL III Webtechniken TEIL IV Datenbanken...

Internet. HTML Programmierung Grundlagen HTML Programmierung für Fortgeschrittene CGI Programmierung PHP Programmierung Programmieren mit JavaScript

PHP MySQL 5.1. Der Einstieg in die Programmierung dynamischer Websites. Florence Maurice. An imprint of Pearson Education

Inhaltsverzeichnis. Teil I Erste Schritte. 1 Einleitung Teil II Grundlagen von VBA. 2 Die ersten VBA-Prozeduren erstellen...

Programmierparadigmen A01 OOP. Programmierparadigmen

Programmierung Paradigmen und Konzepte

Die C++-Programmiersprache

Das Einsteigerseminar Objektorientierte Programmierung in Java

Programmierparadigmen

Liste MI / Liste I Programmieren in C++

Richtig einsteigen: Access 2007 VBA-Programmierung

Objektorientierung in Oracle

2 Grundsätzliches zur objektorientierten Programmierung.. 33

Inhalt. Vorwort Erste Grundlagen... 15

Handbuch für die Programmierung mit LabVIEW

Thomas Sillmann. Swift im Detail HANSER

Application Engineering Grundlagen für die objektorientierte Softwareentwicklung mit zahlreichen Beispielen, Aufgaben und Lösungen

ETL-Industrialisierung mit dem OWB Mapping Generator. Irina Gotlibovych Senior System Beraterin

Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp

Inhaltsverzeichnis. Einleitung

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Richtig einsteigen: Access 2010 VBA-Programmierung

Programmieren I. Überblick. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Matthias-Claudius-Gymnasium Fachcurriculum Informatik

Programmieren mit Ruby

Java lernen mit BlueJ

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Portal zur Verwaltung von Wohngemeinschaftsfinanzen mit dem Web-Framework Django

Beschreibung des Angebotes. PHP Programmierung. LernenimInternet. Angebot-Nr Angebot-Nr Weiterbildung. Preis.

Grundkurs Programmieren in Java

Inhaltsverzeichnis. Teil 1 Grundlagen der Objektorientierung. Kapitel 1 Objekte und Klassen Objekte und Klassen Instanzen erzeugen Methoden aufrufen

Software Engineering

Inhaltsverzeichnis Grundbegriffe der Programmierung Strukturelle Programmierung

Schnellübersicht...5. Vorwort...7. Inhaltsverzeichnis Vor dem Start Wer sind Sie? Hinweise zum Buch...

1 mysap.com und der Web Application Server 1

Vorwort. Teil I: Grundkurs 1. 1 Keine Angst vor C++! 3

Java als erste. Programmiersprache. Java 2 Plattform. Von Prof. Dr. Joachim Goll Cornelia Weiß Peter Rothländer. 2., durchgesehene Auflage

Objektorientierte Programmierung in Java

Grundkurs Programmieren in Java

Grundkurs Programmieren in Java Band 1: Der Einstieg in Programmierung und Objektorientierung

Vorwort. Zu dieser Reihe. Autor

Multimedia im Netz Wintersemester 2013/14. Übung 02 (Hauptfach)

Zweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts

33 Computer & Literatur Verlag GmbH

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Transkript:

Matthias Kannengiesser PHP5 2. aktualisierte Auflage irammierung Mit 144 Abbildungen FRANZIS

Inhaltsverzeichnis 1 Softwareentwicklung 19 1.1 Programmierung 19 1.1.1 Programmierer und Entwickler 19 1.1.2 Was bedeutet Programmieren für den Entwickler? 20 1.1.3 Was ist ein Programm? 23 1.1.4 Was ist Abstraktion? 23 1.1.5 Welche Regeln sind beim Programmieren zu beachten? 24 1.2 Programmiersprache 24 1.2.1 Syntax (Semiotik) 26 1.2.2 Historie 27 1.2.3 Die Komponenten 30 1.2.4 Sprachgenerationen 32 1.2.5 Imperative und deklarative Programmiersprachen 34 1.2.6 Objektorientierte Programmiersprachen 35 1.2.7 Klassifizierungen 35 1.2.8 Programmierparadigmen 36 1.3 Phasen der Softwareentwicklung 39 1.3.1 Phasenmodell 40 1.3.2 Planungsphase 42 1.3.3 Analysephase 45 1.3.4 Entwurfsphase 48 1.3.5 Programmierung 58 1.3.6 Validierung und Verifikation 60 1.3.7 Projektmanagement 62 1.3.8 Qualitätsmanagement 64 1.3.9 Konfigurationsmanagement 66 1.3.10 Dokumentation 68 1.4 V-Modell 68 1.4.1 V-Modell XT 70 1.5 Extreme Programming 70 1.5.1 Werte 70 1.5.2 Prinzipien 71 1.5.3 Praktiken 72

Inhaltsverzeichnis 1.5.4 Flexibilität oder Steifheit 78 1.5.5 Rollenverteilung beim Extreme Programming 79 1.5.6 Abgrenzung zu traditionellen Vorgehensmodellen 80 1.5.7 Zusammenfassung 81 1.6 Webanwendungen 82 1.6.1 Wie alles begann 85 1.6.2 Architektur einer Webanwendung 86 1.6.3 Arbeitsweise von Webanwendungen 86 1.6.4 Alternative Technologien 87 1.6.5 Sicherheitsrisiken und Webanwendungen 88 1.6.6 Web-Engineering 89 1.6.7 Webanwendungen im Vergleich 89 Prozedurale und objektorientierte Programmierung 93 2.1 Prozedurale Programmierung 93 2.1.1 Funktionen - Definition und Anwendung 94 2.1.2 Geltungsbereich von Variablen 96 2.1.3 Konstanten in Funktionen 98 2.1.4 Funktionen und Parameter 99 2.1.5 Rückgabewerte von Funktionen 108 2.1.6 Funktionen als Referenzen 111 2.1.7 Verschachtelte Funktionsaufrufe 112 2.1.8 Funktionsnamen zur Laufzeit 114 2.1.9 Dynamisch Funktionen erzeugen 115 2.1.10 Bedingte Funktionen 116 2.1.11 Fazit 116 2.2 Rekursion und Iteration 116 2.2.1 Grundlagen - Rekursion und Iteration 117 2.2.2 Fakultät einer Zahl n (n!) rekursiv 117 2.2.3 Türme von Hanoi 120 2.2.4 Anwendung bei hierarchischen Strukturen 122 2.2.5 Anwendung bei Verzeichniszugriffen 130 2.2.6 Iteration oder Rekursion? 137 2.3 Objektorientierte Programmierung 138 2.3.1 Evolution der Objektorientierung 138 2.3.2 Bestandteile der Objektorientierung 139 2.3.3 Begriffe der objektorientierten Programmierung 142 2.3.4 Was genau bedeutet objektorientiert? 142 2.3.5 Welche Sprachen ermöglichen Objektorientierung? 145 2.4 Modularisierung - Einbindung externer Skripte 146 2.4.1 Einbinden von Modulen 146 2.4.2 Module und HTML 147

Inhaltsverzeichnis 2A3 Optimierung der Pfadangaben von Modulen 147 2.4.4 Mehrfachverwendung von Modulen verhindern 148 2.4.5 Informationen über Module ermitteln.. 149 2.4.6 Module automatisch einbinden mit autoload 150 2.4.7 Tipps im Umgang mit Modulen 150 2.5 Arrays 151 2.5.1 Was sind Arrays? 151 2.5.2 Terminologie 152 2.5.3 Arrays erzeugen 152 2.5.4 Arrays löschen 155 2.5.5 Mehrdimensionale Arrays 156 2.5.6 Arrayfunktionen 161 PHP und OOP 171 3.1 PHP und Objektorientierung 171 3.1.1 Was sind Objekte? 171 3.1.2 Objektorientierte Programmierung (OOP) 174 3.1.3 Wie entwickeln Sie objektorientiert? 175 3.1.4 Zusammenfassung 176 3.2 OOP und PHP 177 3.2.1 Klassen in PHP 177 3.2.2 Vererbung in PHP 181 3.2.3 Konstruktoren und Destruktoren 183 3.2.4 Erweiterungen des OOP-Konzepts in PHP 4 185 3.2.5 Meta-Informationen über Klassen und Objekte 188 3.2.6 PHP-Objekte sind assoziative Arrays 192 3.2.7 Optimierung durch parent 193 3.2.8 Mehrfachvererbung durch Aggregation 194 3.2.9 Überladen von Klassen durch Overloading 196 3.2.10 Nützliche OOP-Codeschnipsel 197 3.3 OOP und PHP 5 200 3.3.1 Klassendefinition in PHP 5 202 3.3.2 Objekte erzeugen und verwenden 203 3.3.3 Konstruktoren und Destruktoren 203 3.3.4 Zugriffsbeschränkung (Datenkapselung) 206 3.3.5 OOP - Ein Rundgang 209 3.3.6 Objekte - Referenzen und Kopien 213 3.3.7 Objekte klonen 214 3.3.8 Klassenvererbung in PHP 5 219 3.3.9 Überladen und Überschreiben von Methoden 220 3.3.10 Finale Klassen und Methoden 224 3.3.11 Abstraktion von Klassen und Methoden 225

1 Inhaltsverzeichnis 3.3.12 Interface - Objektschnittstellen 228 3.3.13 Statische Eigenschaften und Methoden 233 3.3.14 Verweisoperator/Gültigkeitsbereichsoperator (::) 235 3.3.15 Klassenkonstanten 237 3.3.16 Interzeptormethoden (Magische Methoden) 238 3.3.17 Typ-Hinweise (class type hints) 244 3.3.18 Dereferenzierung von Objekten 247 3.3.19 Einsatz von instanceof 249 3.3.20 Objekte von Unterklassen 250 3.3.21 Neue Konstante _METHOD_ 252 3.3.22 Serialisierungvon Objekten 253 3.3.23 Praxisbeispiel- Lebewesen 255 3.3.24 OOP-Codepool 259 3.4 Klassensyntax in PHP 4 und PHP 5 262 3.4.1 Syntaxvergleich 263 3.5 Anwendung der Objektorientierung 269 3.5.1 Klassen und Objekte 269 3.5.2 Vererbung 270 3.5.3 Überschreiben von Methoden 272 3.6 Einfachvererbung und Mehrfachvererbung 276 3.6.1 Mehrfachvererbung bei Schnittstellen 278 3.7 Standard PHP Library (SPL) 280 3.7.1 ArrayAccess-Interface 283 3.7.2 Iterator-Interface 292 3.7.3 IteratorAggregate-Interface 302 3.7.4 Übersicht über die SPL-Iteratoren 307 3.7.5 Anwendungsbeispiel zum Einsatz von Iteratoren 309 3.8 Reflection-API 315 3.8.1 Reflection-API als Objektmodell 315 3.8.2 Reflection-Klassen im Detail 317 3.8.3 Erweiterung der Reflection-Klassen 328 Entwurfsmuster 331 4.1 Einführung zu Entwurfsmustem 331 4.1.1 OOP und Entwurfsmuster 331 4.1.2 OOP für Fortgeschrittene 333 4.1.3 Sinn und Zweck 335 4.1.4 Entwurfsmusterkatalog 338 4.1.5 Übersicht der Entwurfsmuster 340 4.1.6 Was Entwurfsmuster nicht sind...344 4.1.7 Andere Arten von Mustern 344 4.2 Anwendungsbeispiele für Entwurfsmuster 345

Inhaltsverzeichnis 4.2.1 Singleton-Entwurfsmuster 345 4.2.2 Factory-Methode-Entwurfsmuster 351 4.2.3 Composite-Entwurfsmuster 358 4.2.4 Subject/Observer-Entwurfsmuster 364 4.3 Enterprise-Anwendungen und Entwurfsmuster 372 4.3.1 Schichten einer Anwendung 372 4.3.2 Datenschicht - Speicherung von Daten 374 4.3.3 Business-Logikschicht - Geschäftsprozesse 375 4.3.4 Präsentationsschicht - Darstellung der Daten 375 4.3.5 Übersicht der Entwurfsmuster in der Business-Logikschicht 376 4.3.6 Model-View-Controller 377 4.4 Fazit 380 Fehlerbehandlung und Exceptions 381 5.1 Fehlerarten 381 5.1.1 Übersicht über die Fehlerkategorien 384 5.1.2 Strategien und Fehlerbehandlung 385 5.2 Fehlerbehandlung 386 5.2.1 Konventionelle Fehlerbehandlung 386 5.2.2 Fehlerkontrolloperator (@) 387 5.2.3 Error-Handler - Laufzeitfehler selbst erzeugen 388 5.2.4 Fehlerverwaltung 395 5.2.5 Error-Handler in Bibliotheken 403 5.3 Exceptions - Ausnahmebehandlung 415 5.3.1 Anwendungsbeispiel - CSV-Dateienverarbeitung 421 5.3.2 Methoden der Exceptions 429 5.3.3 Exceptions der SPL (Standard PHP Library) 430 5.3.4 Benutzerdefinierte Exception-Klassen 433 5.3.5 Globale Verarbeitung von Exceptions 436 5.3.6 Built-in Backtracing 437 5.3.7 Sinnvoller Einsatz von Exceptions 437 5.4 Fehler für Statuscodes 437 Qualitätssicherung und Dokumentation 443 6.1 Qualitätskriterien 443 6.2 Reviews 444 6.2.1 Nutzen von Reviews 444 6.2.2 Review-Prozess 445 6.2.3 Review-Arten 445 6.2.4 Erfolgsfaktoren 446 6.2.5 Code Review (Peer Rating) 446 6.3 Debugging - Fehlersuche 447

14 Inhaltsverzeichnis 6.3.1 Einführung 447 6.3.2 PHP-Fehlerkonzept 447 6.3.3 Syntaxanalyse 448 6.3.4 Fehlerprävention 449 6.3.5 Fehlerarten 450 6.3.6 Fehlersuche und Fehlerfinden 452 6.3.7 Debugging 454 6.4 Codekonventionen 464 6.4.1 Was sind Codekonventionen? 464 6.4.2 Wie sollen sie eingesetzt werden? 465 6.4.3 Coderegelsammlung 469 6.4.4 Codeformatierung (Beautifier) 474 6.5 Codeprogrammierstil 476 6.5.1 Codeformulierung 477 6.5.2 Arbeiten ohne Short Tags 478 6.5.3 Umbrüche und Zeilenlänge 478 6.5.4 Leerstellen 480 6.5.5 HTML ohne echo konstruieren 480 6.5.6 Optimaler Einsatz von Klammern 481 6.5.7 Vermeiden von Magic Numbers 482 6.5.8 Ressourcen und Ordnung 483 6.5.9 SQL-Konventionen 484 6.6 Dokumentation 485 6.6.1 Dokumentationsanforderungen 485 6.6.2 Programm ablaufe und Struktogramme 488 6.6.3 Dokumentationstools 490 6.7 Encoder und Obfuscatoren 509 6.7.1 Encoder 509 6.7.2 Obfuscator 510 6.7.3 Sammlung von Encodern und Obfuscatoren 510 7 OOP-Praxis 513 7.1 MySQLiundOOP 513 7.1.1 MySQLi-lnstallation 514 7.1.2 MySQLi -erste Gehversuche 515 7.1.3 MySQLi und SQL-Abfragen 517 7.1.4 Referenz zur MySQLi-Unterstützung 520 7.1.5 Fehlerund Fehlerbehandlung 524 7.1.6 Prepared Statements (Vorgefertigte Abfragen) 526 7.2 PDOundOOP 528 7.2.1 Datenbankabstraktion 529 7.2.2 Datenbankabfragen via PDO 530

Inhaltsverzeichnis 7.2.3 PDOStatement - Vorgefertigte Abfragen 534 7.2.4 Verwendung von Transaktionen 539 7.2.5 Fehler und Fehlerbehandlung 541 7.3 GD und OOP 542 7.3.1 MIME-Typen und PHP 543 7.3.2 Festlegung des MIME-Typs 543 7.3.3 Aufbau und Grundlagen 544 7.3.4 Dynamische Bilderzeugung 546 7.3.5 Anwendungsbeispiel - Dynamische Banner 548 7.3.6 Anwendungsbeispiel - Dynamische Diagramme 555 7.4 Mail und OOP 565 7.4.1 Protokolle und Grundlagen 565 7.4.2 Anwendungsbeispiel - Mailversand und Attachments 566 7.5 Captcha und OOP 572 7.5.1 Captcha-Merkmale 573 7.5.2 Anwendungsgebiete 573 7.5.3 Umgehungvon Captchas 573 7.5.4 Anwendungsbeispiel - Dynamisches Captcha 574 7.6 Verzeichnisse und OOP 581 7.6.1 Aufbau der Klasse 581 7.6.2 Anwendungsbeispiel - Dynamische Bildgalerie 586 Codegeneratoren 589 A.l Automatisierte Codegeneratoren 589 A.2 Manuell gesteuerte Codegeneratoren 589 A.3 Codegenerierung 590 A.4 Generative Programmierung 590 A.5 Codegeneratoren - Software 593 A.6 Code Generation Network 597 Framework - API 599 B.l White-Box- und Black-Box-Frameworks 599 B.2 Framework-Typen 600 B.3 Frameworks in der Praxis 601 B.4 Frameworks in PHP 602 B.5 Symfony 604 B.6 Cake PHP 605 B.7 Prado 606 B.8 Seagull 608 B.9 Zend-Framework 609 B.10 Code Igniter 611 B.ll Zusammenfassung 612

16 Inhaltsverzeichnis С Sicherheit 613 C.l Schwachstellen und Gefahren 613 C.l.l Cross-Site Scripting (XSS) 613 C.1.2 Cross-Site Request Forgery (CSRFoderXSRF) 613 C.1.3 Information Disclosure 614 C.1.4 HTTP Response Splitting 614 C.l.5 Remote Command Execution 614 C.1.6 SQL-Injection 614 C.2 Webanwendungen und Sicherheit 615 C.3 Sicherheit - SQL-Injection 617 C.3.1 Angriffsszenario 617 C.3.2 Abwehrmöglichkeiten 618 C.3.3 Anti-SQL-Injection - Funktionen 621 C.4 Sicherheit - Cross-Site Scripting 624 C.4.1 Daten filtern via daten_reinigero 629 D ArgoUML - Crashkurs 631 D.l Voraussetzungen 631 D.2 Ausführen von ArgoUML 632 D.3 Anlegen eines Projekts 633 D.4 Entwurfvon PHP-Klassen 634 D.5 Erzeugen von PHP-Klassen 637 E Vordefinierte Variablen 641 E.l Register Globals- Systemarrays in PHP 641 E.2 Server- und Umgebungsvariablen 641 E.3 Fehlercodes in PHP 643 F Tools 645 F.l Gruppen 645 F.2 Installations-Kits 645 F.3 PHP und MySQL 645 F.4 PHP-Entwicklungs-Studios 645 F.5 MySQL-Editoren 645 F.6 Frameworks 646 F.7 Code Beautifier 646 F.8 Encoder und Obfuscatoren 646 F.9 PHP-Debugger 646 F.10 Tools 647

Inhaltsverzeichnis 17 G Informationsquellen 649 H Nachwort 651 Stichwortverzeichnis 653