Next:
Impressum
PHP
1
Impressum
2
Grundlagen
2.1
PHP-Geschichte und Entwicklung
2.1.1
Die Anfänge: Personal Home Page Tools
2.1.2
PHP/FI und PHP 3: Der Weg zur Programmiersprache
2.1.3
PHP 4: Das Zend Engine Zeitalter
2.1.4
PHP 5: Vollständige Objektorientierung
2.1.5
PHP 7: Performance-Revolution
2.1.6
PHP 8: Innovation und Modernisierung
2.1.7
Der Einfluss der PHP-FIG
2.1.8
PHP heute
3
Installation und Konfiguration von PHP
3.1
PHP unter Windows installieren
3.1.1
Methode 1: Direkter Download (empfohlen)
3.1.2
Methode 2: Paketmanager Chocolatey
3.2
PHP unter macOS installieren
3.3
PHP unter Linux installieren
3.4
PHP-Erweiterungen aktivieren (alle Systeme)
3.5
Wichtige PHP-Einstellungen (
php.ini
)
3.6
PHP in VSCode einrichten
3.7
PHP in PHPStorm einrichten
3.8
PHP mit Webserver (Apache und Nginx)
3.8.1
Beispielkonfiguration für Nginx:
3.8.2
Beispielkonfiguration für Apache (Linux):
3.9
Installation von Composer (alle Systeme)
3.10
Installation testen und häufige Fehler beheben
3.10.1
Testen der PHP-Installation
3.10.2
Häufige Fehlerquellen beheben:
3.11
PHP-Versionen parallel betreiben (optional, fortgeschritten)
3.11.1
Windows:
3.11.2
Linux mit
update-alternatives
:
4
LAMP, WAMP, MAMP und Docker-Umgebungen
4.1
Der klassische LAMP-Stack
4.1.1
Installation eines LAMP-Stacks
4.1.2
Vorteile des LAMP-Stacks:
4.1.3
Nachteile:
4.2
WAMP: Windows-Alternative
4.2.1
WAMP-Lösungen:
4.2.2
Installation von WampServer:
4.2.3
Konfiguration eines eigenen WAMP-Stacks:
4.2.4
Vorteile von WAMP:
4.2.5
Nachteile:
4.3
MAMP: Für macOS-Entwickler
4.3.1
MAMP-Lösungen:
4.3.2
Installation von MAMP:
4.3.3
Vorteile von MAMP:
4.3.4
Nachteile:
4.4
Docker: Der moderne Ansatz
4.4.1
Vorteile von Docker:
4.4.2
Installation von Docker:
4.4.3
Einfacher PHP-Docker-Stack:
4.4.4
Erweiterte Docker-Konfiguration:
4.4.5
Starten des Docker-Stacks:
4.4.6
Verbindung zum PHP-Container:
4.5
Docker für größere Projekte: Laravel Sail & Laradock
4.5.1
Laravel Sail
4.5.2
Laradock
4.6
Entwicklungsumgebungen im Vergleich
4.7
Empfehlungen für verschiedene Szenarien
5
Die PHP-Laufzeitumgebung
5.1
PHP als Interpreter
5.1.1
Ausführungsphasen
5.2
Die Zend Engine
5.2.1
Komponenten der Zend Engine
5.2.2
Evolution der Zend Engine
5.3
Ausführungsmodi
5.3.1
CLI-Modus (Command Line Interface)
5.3.2
Webserver-Modus
5.3.3
Eingebetteter Webserver für die Entwicklung
5.4
Der Anfrage-Lebenszyklus
5.5
OPcache: Performance-Boost durch Bytecode-Caching
5.5.1
Ohne OPcache
5.5.2
Mit OPcache
5.6
JIT-Compiler in PHP 8
5.6.1
JIT-Modi
5.6.2
Wann lohnt sich JIT?
5.7
Garbage Collection
5.7.1
Referenzzählung
5.7.2
Zyklischer Garbage Collector
5.8
Superglobals und vordefinierte Variablen
5.9
Konfiguration der Laufzeitumgebung
5.9.1
Über php.ini
5.9.2
Über .htaccess (Apache)
5.9.3
Zur Laufzeit im Skript
5.9.4
Priorität der Konfigurationsquellen
5.10
Erweiterungen und ihre Auswirkungen auf die Laufzeitumgebung
5.10.1
Überprüfen und Laden von Erweiterungen
5.11
Thread-Safety und PHP
5.12
PHP in verschiedenen Umgebungen
5.12.1
CLI-Spezifisches Verhalten
5.12.2
Webspezifisches Verhalten
6
Syntax und Sprachkonstrukte
6.1
PHP-Tags und Dateiformate
6.1.1
Standard-PHP-Tags
6.1.2
Schließendes Tag
6.1.3
Kurze Echo-Tags
6.2
PHP im HTML-Kontext
6.3
Alternative Syntax für Kontrollerstrukruren
6.4
Anweisungsende
6.5
Kommentare
6.6
Namenskonventionen
6.7
Whitespace und Formatierung
6.8
Literale und Ausdrücke
6.9
Ausgabefunktionen
7
Variablen, Datentypen und Typumwandlung
7.1
Variablen in PHP
7.1.1
Variablendeklaration und -zuweisung
7.1.2
Gültige Variablennamen
7.1.3
Variablenvariablen
7.1.4
Variablengeltungsbereich (Scope)
7.1.5
Statische Variablen
7.2
Datentypen in PHP
7.2.1
Skalare Typen
7.2.2
Zusammengesetzte Typen
7.2.3
Spezielle Typen
7.2.4
Callback / Callable
7.3
Typbestimmung und -überprüfung
7.4
Typumwandlung (Type Casting)
7.4.1
Implizite Typumwandlung
7.4.2
Explizite Typumwandlung
7.4.3
Typen-Juggling beim Vergleich
7.5
Typkonvertierungsfunktionen
7.6
Serialisierung
7.7
Typprüfung mit Strict Types (ab PHP 7)
8
Operatoren und Ausdrücke
8.1
Arithmetische Operatoren
8.1.1
Integer Division und Modulo
8.2
Zuweisungsoperatoren
8.2.1
Referenzzuweisung
8.3
Vergleichsoperatoren
8.3.1
Besonderheiten bei Vergleichen in PHP
8.4
Logische Operatoren
8.4.1
Kurzschlussauswertung (Short-circuit Evaluation)
8.4.2
Unterschied zwischen
&&
und
and
,
||
und
or
8.5
Bitweise Operatoren
8.6
String-Operatoren
8.7
Array-Operatoren
8.8
Inkrement/Dekrement-Operatoren
8.9
Bedingte Operatoren
8.9.1
Ternärer Operator
8.9.2
Null Coalescing Operator (seit PHP 7.0)
8.9.3
Null Coalescing Assignment Operator (seit PHP 7.4)
8.9.4
Nullsafe Operator (seit PHP 8.0)
8.10
Type-Operatoren
8.10.1
Typprüfung mit
instanceof
8.11
Ausführungsoperator
8.12
Fehlerunterdrückung mit @
8.13
Operatorpräzedenz und Assoziativität
8.14
Match-Ausdruck (seit PHP 8.0)
8.15
Komplexe Ausdrücke
8.16
Bewährte Praktiken
9
Kontrollstrukturen
9.1
Bedingte Anweisungen
9.1.1
if-Anweisung
9.1.2
if-else-Anweisung
9.1.3
if-elseif-else-Anweisung
9.1.4
Alternative Syntax für Templates
9.2
Switch-Anweisung
9.2.1
Wichtige Hinweise zu switch
9.3
Match-Ausdruck (ab PHP 8.0)
9.3.1
Unterschiede zwischen match und switch
9.3.2
Ausdrücke in match-Bedingungen
9.4
Schleifen
9.4.1
while-Schleife
9.4.2
do-while-Schleife
9.4.3
for-Schleife
9.4.4
foreach-Schleife
9.4.5
Verschachtelte Schleifen
9.5
Schleifensteuerung
9.5.1
break
9.5.2
continue
9.6
Alternative Kontrollstrukturen
9.6.1
goto (mit Vorsicht zu verwenden)
9.6.2
Bedingte Ausführung mit dem ternären Operator
9.6.3
Null Coalescing Operator
9.7
Kontrollstrukturen und HTML
9.8
Rekursion
9.9
Benutzerdefinierte Kontrollstrukturen mit Funktionen
9.10
Bewährte Praktiken
10
Funktionen und Namensräume
10.1
Funktionen
10.1.1
Funktionsdefinition und -aufruf
10.1.2
Parameter und Argumente
10.1.3
Standardparameterwerte
10.1.4
Rückgabewerte
10.1.5
Variable Anzahl von Parametern
10.1.6
Benannte Argumente (PHP 8.0+)
10.1.7
Typdeklarationen
10.1.8
Variablengültigkeit (Scope)
10.1.9
Statische Variablen
10.1.10
Verschachtelte Funktionen
10.1.11
Anonyme Funktionen und Closures
10.1.12
Arrow Functions (PHP 7.4+)
10.1.13
First-Class Callable Syntax (PHP 8.1+)
10.1.14
Rekursive Funktionen
10.1.15
Generator-Funktionen
10.2
Namensräume (Namespaces)
10.2.1
Definition von Namensräumen
10.2.2
Verwendung von Klassen aus Namensräumen
10.2.3
Mehrere Imports
10.2.4
Verschachtelte Namensräume
10.2.5
Namespaces für Funktionen und Konstanten
10.2.6
Der globale Namensraum
10.2.7
Namensraum-Fallstricke
10.2.8
Automatisches Laden von Klassen (Autoloading)
10.3
Integration von Funktionen und Namensräumen
10.4
Bewährte Praktiken
10.4.1
Für Funktionen
10.4.2
Für Namensräume
11
Objektorientierte Programmierung in PHP
11.1
Klassen und Objekte
11.1.1
Grundkonzepte der OOP
11.1.2
Definition einer Klasse
11.1.3
Eigenschaften (Properties)
11.1.4
Methoden
11.1.5
Der Konstruktor
11.1.6
Objekterzeugung und -verwendung
11.1.7
Der $this-Verweis
11.1.8
Statische Eigenschaften und Methoden
11.1.9
Konstanten in Klassen
11.1.10
Sichtbarkeit und Zugriffsmodifikatoren
11.1.11
Getter und Setter
11.1.12
Klassen-Autoloading
11.1.13
Praktisches Beispiel: Ein einfaches Blog-System
11.1.14
Zusammenfassung
12
Vererbung und Polymorphismus
12.1
Vererbung
12.1.1
Grundlegende Vererbung
12.1.2
Der parent-Operator
12.1.3
Zugriffsmodifikatoren bei Vererbung
12.1.4
Verhindern von Vererbung und Überschreibung
12.2
Polymorphismus
12.2.1
Methodenüberschreibung
12.2.2
Verwendung von Polymorphismus
12.2.3
Typ-Deklarationen und Polymorphismus
12.3
Praktisches Beispiel: Ein Zahlungssystem
12.4
Vorteile von Vererbung und Polymorphismus
12.5
Hinweise und Best Practices
13
Interfaces und abstrakte Klassen
13.1
Abstrakte Klassen
13.1.1
Definition einer abstrakten Klasse
13.1.2
Verwendung einer abstrakten Klasse
13.1.3
Schlüsselmerkmale abstrakter Klassen
13.2
Interfaces
13.2.1
Definition eines Interfaces
13.2.2
Implementierung von Interfaces
13.2.3
Schlüsselmerkmale von Interfaces
13.3
Interface-Konstanten
13.4
Interface-Vererbung
13.5
Typ-Deklarationen mit Interfaces
13.6
Neue Interface-Features in PHP 8
13.6.1
Union Types in Interface-Methoden
13.6.2
Interface-Attribute
13.7
Abstrakte Klassen vs. Interfaces
13.8
Wann abstrakte Klassen, wann Interfaces?
13.9
Praktisches Beispiel: Content-Management-System
14
Traits und Mixins
14.1
Grundkonzept von Traits
14.1.1
Definition eines Traits
14.1.2
Verwendung eines Traits in einer Klasse
14.2
Mehrere Traits verwenden
14.3
Konfliktlösung bei Traits
14.3.1
Insteadof-Operator
14.3.2
As-Operator
14.4
Ändern der Sichtbarkeit
14.5
Abstrakte Methoden in Traits
14.6
Statische Methoden und Eigenschaften in Traits
14.7
Traits in Traits
14.8
Traits und Vererbung
14.9
Mixins in PHP
14.10
Vor- und Nachteile von Traits
14.10.1
Vorteile:
14.10.2
Nachteile:
14.11
Best Practices für Traits
14.12
Praktisches Beispiel: Ein Blog-System mit Traits
15
Magische Methoden
15.1
Überblick über magische Methoden
15.2
Konstruktor und Destruktor
15.2.1
__construct()
15.2.2
__destruct()
15.3
Eigenschaftszugriff: __get, __set, __isset und __unset
15.3.1
__get()
15.3.2
__set()
15.3.3
__isset()
15.3.4
__unset()
15.4
Methodenaufruf: __call und __callStatic
15.4.1
__call()
15.4.2
__callStatic()
15.5
Serialisierung: __sleep, __wakeup, __serialize und __unserialize
15.5.1
__sleep()
15.5.2
__wakeup()
15.5.3
__serialize() und __unserialize() (ab PHP 7.4)
15.6
Weitere nützliche magische Methoden
15.6.1
__toString()
15.6.2
__invoke()
15.6.3
__clone()
15.6.4
__debugInfo()
15.6.5
__set_state()
15.7
Praxisbeispiel: Ein aktives Datensatzmodell (Active Record)
16
Type Hints und Return Types
16.1
Entwicklung der Typisierung in PHP
16.2
Grundlegende Typ-Hints für Parameter
16.3
Verfügbare Typdeklarationen
16.3.1
Skalare Typen (seit PHP 7.0)
16.3.2
Verbundtypen
16.3.3
Klassentypen
16.3.4
Spezielle Typen
16.4
Return Types
16.5
Nullable Types
16.6
Union Types (seit PHP 8.0)
16.7
Intersection Types (seit PHP 8.1)
16.8
Type Checking Modes
16.8.1
Coercive Mode (Standard)
16.8.2
Strict Mode
16.9
Praktisches Beispiel: Datenbankabstraktion
16.10
Vorteile starker Typisierung in PHP
16.10.1
Property Type Declarations (seit PHP 7.4)
16.11
Typed Properties mit Spätinitialisierung (seit PHP 7.4)
16.12
Constructor Property Promotion (seit PHP 8.0)
16.13
Komplexeres Beispiel: Benutzerverwaltungssystem
16.14
Best Practices für Type Hints und Return Types
17
Anonymous Classes
17.1
Grundlagen der anonymen Klassen
17.2
Verwendungszwecke für anonyme Klassen
17.3
Konstruktorparameter und -argumente
17.4
Vererbung und Interface-Implementierung
17.5
Anonyme Klassen als Methodenrückgabewerte
17.6
Zugriff auf äußeren Scope
17.7
Verwendung mit Traits
17.8
Anonyme Klassen als Callbacks
17.9
Anonyme Klassen mit Type Hints
17.10
Interne Implementierung und Performance
17.11
Praktisches Beispiel: Event Listener
17.12
Praktisches Beispiel: Strategiemuster
17.13
Vor- und Nachteile anonymer Klassen
17.13.1
Vorteile:
17.13.2
Nachteile:
17.14
Best Practices
18
Fehlerbehandlung und Exceptions
18.1
Fehlerarten in PHP
18.2
Traditionelle Fehlerbehandlung in PHP
18.3
Grundlagen der Exception-Behandlung
18.4
Die Exception-Hierarchie in PHP
18.5
Eigene Exception-Klassen erstellen
18.6
Das Throwable-Interface
18.7
Exceptions werfen und weitergeben
18.8
Multi-Catch-Blöcke
18.9
Nested Exceptions und Exception-Chaining
18.10
Verwenden von finally
18.11
Globale Exception-Handler
18.12
Konvertierung von PHP-Fehlern in Exceptions
18.13
Praktisches Beispiel: Fehlerbehandlung in einer Web-API
18.14
Best Practices für die Fehlerbehandlung
19
Moderne Sprachfeatures in PHP
19.1
Benannte Argumente
19.1.1
Grundlegendes Konzept
19.1.2
Vorteile von benannten Argumenten
19.1.3
Kombination mit positionellen Argumenten
19.1.4
Benannte Argumente und Variadic-Funktionen
19.1.5
Einschränkungen und Kompatibilität
19.1.6
Benannte Argumente in der Praxis
19.1.7
Fazit
20
Constructor Property Promotion
20.1
Das Problem: Wiederholung im traditionellen Ansatz
20.2
Die Lösung: Constructor Property Promotion
20.3
Wie es funktioniert
20.4
Kombination mit anderen Sprachfeatures
20.4.1
Mit Typed Properties und Nullable Types
20.4.2
Mit Readonly Properties (ab PHP 8.1)
20.4.3
Mit Union Types (ab PHP 8.0)
20.5
Einschränkungen und Feinheiten
20.6
Anwendungsfälle und Best Practices
20.7
Integration mit Docblocks
21
Nullsafe Operator
21.1
Das Problem: Verkettete Null-Prüfungen
21.2
Die Lösung: Der Nullsafe Operator
21.3
Funktionsweise im Detail
21.4
Anwendungsfälle
21.4.1
1. Verschachtelte Objektzugriffe
21.4.2
2. Methodenaufrufe mit Rückgabewerten
21.4.3
3. Kombination mit Array-Zugriffen
21.4.4
4. Zugriff auf statische Methoden und Eigenschaften
21.4.5
5. Methoden ohne Rückgabewert (void)
21.5
Kombination mit anderen PHP-Features
21.5.1
Mit der Null Coalescing Operator (
??
)
21.5.2
Mit dem Array-Dereferencing
21.5.3
Mit Arrow Functions
21.6
Einschränkungen und Hinweise
21.7
Best Practices
22
Match Expression
22.1
Grundlegendes Konzept
22.2
Syntax und Vergleich mit switch
22.3
Wichtige Eigenschaften von Match
22.3.1
1. Strikte Vergleiche
22.3.2
2. Mehrere Bedingungen pro Arm
22.3.3
3. Ausdrücke als Bedingungen
22.3.4
4. Ausführen von Code in den Arms
22.3.5
5. Vollständigkeitsprüfung
22.4
Fortgeschrittene Anwendungen
22.4.1
Pattern Matching mit Bedingungen
22.4.2
Validierung und fehlerbasierte Verzweigung
22.4.3
HTTP-Routenbehandlung
22.4.4
State Machines
22.5
Best Practices
22.6
Einschränkungen
23
Union Types und Intersection Types
23.1
Union Types
23.1.1
Grundlegende Syntax
23.1.2
Anwendungsfälle für Union Types
23.1.3
Unterstützte Typen in Union Types
23.2
Intersection Types
23.2.1
Grundlegende Syntax
23.2.2
Einschränkungen bei Intersection Types
23.2.3
Typische Anwendungsfälle für Intersection Types
23.3
Kombination von Union und Intersection Types
23.4
Behandlung von Typprüfungen zur Laufzeit
23.5
Best Practices
23.6
Herausforderungen und Einschränkungen
24
Attribute (Annotations)
24.1
Grundkonzept und Syntax
24.2
Attribute vs. Docblock-Annotationen
24.3
Erstellung eigener Attribute
24.4
Ziele von Attributen
24.5
Wiederholbarkeit von Attributen
24.6
Auslesen von Attributen zur Laufzeit
24.7
Typ-Validierung in Attributkonstruktoren
24.8
Praxisbeispiele für Attribute
24.8.1
1. Ein einfaches Routing-System
24.8.2
2. Validierungssystem
24.8.3
3. Dependency Injection Container
24.9
Best Practices und Empfehlungen
24.10
Attribute in populären PHP-Frameworks
24.11
Einschränkungen und Herausforderungen
25
JIT-Compiler
25.1
Was ist ein JIT-Compiler?
25.2
Aktivierung und Konfiguration des JIT-Compilers
25.3
Messung der JIT-Leistung
25.4
Anwendungsfälle für JIT
25.4.1
1. Rechenintensive Anwendungen
25.4.2
2. Langlebige Prozesse
25.4.3
3. Numerische und wissenschaftliche Berechnungen
25.5
Grenzen und Herausforderungen des JIT-Compilers
25.5.1
1. Overhead bei kurzlebigen Anfragen
25.5.2
2. I/O-gebundene Anwendungen
25.5.3
3. Speicherverbrauch
25.6
Best Practices für den Einsatz des JIT-Compilers
25.6.1
1. Testen und Benchmarken Sie Ihre spezifischen Anwendungen
25.6.2
2. Verwenden Sie den JIT-Compiler für geeignete Anwendungstypen
25.6.3
3. Konfigurieren Sie den JIT-Modus nach Ihren Bedürfnissen
25.6.4
4. Überwachen Sie Speicherverbrauch und Leistung
25.7
JIT-Compiler in der PHP-Ökosystem-Evolution
26
Fibers
26.1
Grundkonzept von Fibers
26.2
Kernfunktionalitäten von Fibers
26.2.1
1. Erstellen und Starten einer Fiber
26.2.2
2. Unterbrechen und Daten zurückgeben
26.2.3
3. Daten an eine Fiber übergeben
26.2.4
4. Behandlung von Exceptions
26.3
Praktische Anwendungsfälle für Fibers
26.3.1
1. Asynchrone I/O-Operationen
26.3.2
2. Generatoren mit bidirektionalem Datenaustausch
26.3.3
3. Pipeline-Verarbeitung
26.4
Fibers vs. Generatoren
26.5
Fibers und asynchrone Frameworks
26.6
Herausforderungen und Einschränkungen von Fibers
26.6.1
1. Debugging-Komplexität
26.6.2
2. Speicherverwaltung
26.6.3
3. Kein echtes Multithreading
26.7
Best Practices für die Verwendung von Fibers
26.7.1
1. Klare Unterbrechungspunkte definieren
26.7.2
2. Status überwachen
26.7.3
3. Strukturieren Sie komplexe Fiber-basierte Systeme
27
Enumerations
27.1
Grundlagen von Enumerations
27.2
Vorteile gegenüber traditionellen Konstantendefinitionen
27.3
Arten von Enumerations
27.3.1
1. Pure Enums (Unit Enums)
27.3.2
2. Backed Enums
27.4
Methoden und Eigenschaften in Enums
27.5
Interfaces und Traits mit Enums
27.6
Praktische Anwendungsfälle
27.6.1
Zustandsautomaten (State Machines)
27.6.2
Validierung und Typumwandlung
27.6.3
Konfigurationsoptionen
27.7
Enums in Datenbankoperationen
27.8
Nützliche Methoden für die Arbeit mit Enums
27.9
Best Practices und Tipps
27.10
Einschränkungen von Enums
28
Readonly Properties
28.1
Grundkonzept
28.2
Vorteile von Readonly Properties
28.3
Regeln und Einschränkungen
28.3.1
1. Typdeklaration ist erforderlich
28.3.2
2. Initialisierung
28.3.3
3. Keine erneute Zuweisung
28.3.4
4. Ausschließlich auf Eigenschaften anwendbar
28.3.5
5. Eingeschränkte Verwendung in Vererbung
28.4
Kombinationen mit anderen Sprachfeatures
28.4.1
Mit Constructor Property Promotion
28.4.2
Mit Union Types und Nullable Types
28.4.3
Mit PHP 8.2: Readonly Classes
28.5
Praxisbeispiele
28.5.1
Value Objects
28.5.2
Data Transfer Objects (DTOs)
28.5.3
Konfigurationsobjekte
28.6
Entwurfsmuster und Architekturüberlegungen
28.6.1
Builder-Pattern
28.6.2
Immutable Collections
28.7
Best Practices
29
First-class Callable Syntax
29.1
Das Problem: Umständliche Callable-Referenzen
29.2
Die Lösung: First-class Callable Syntax
29.3
Detaillierte Syntaxoptionen
29.3.1
1. Globale Funktionen und Funktionen mit Namespace
29.3.2
2. Instanzmethoden
29.3.3
3. Statische Methoden
29.3.4
4. Methoden über variablen Klassennamen
29.3.5
5. Methoden mit dynamischem Namen
29.4
Praktische Anwendungsfälle
29.4.1
1. Callbacks an Array-Funktionen übergeben
29.4.2
2. Ereignisbehandlung (Event Handling)
29.4.3
3. Strategie-Muster (Strategy Pattern)
29.4.4
4. Dependency Injection mit Callbacks
29.5
Einschränkungen und Lösungen
29.5.1
1. Partielle Anwendung (Partial Application)
29.5.2
2. Zugriff auf private/protected Methoden
29.5.3
3. Bindung an Objekte (Binding)
29.6
First-class Callable Syntax vs. Arrow Functions
29.7
Best Practices
30
Datenverarbeitung und -speicherung
30.1
Arbeiten mit Formularen
30.1.1
Grundlagen der Formularverarbeitung
30.1.2
Formular-Methoden: GET vs. POST
30.1.3
Validierung von Formulardaten
30.1.4
Sanitization - Bereinigung von Eingabedaten
30.1.5
Persistente Formulardaten
30.1.6
Datei-Uploads
30.1.7
CSRF-Schutz bei Formularen
30.1.8
Formularverarbeitung mit PHP-Frameworks
30.1.9
Zusammenfassung
31
Dateiverarbeitung
31.1
Dateizugriffsfunktionen
31.1.1
Öffnen und Schließen von Dateien
31.1.2
Lesen von Dateien
31.1.3
Schreiben in Dateien
31.2
Dateisystem-Funktionen
31.3
Verzeichnisoperationen
31.4
Dateipfad-Operationen
31.5
CSV-Dateien verarbeiten
31.6
INI-Dateien verarbeiten
31.7
Temporäre Dateien
31.8
Datei-Uploads verarbeiten
31.9
Sicherheitsaspekte bei der Dateiverarbeitung
31.10
Asynchrone Dateioperationen
32
Datenbanken mit PDO
32.1
Vorteile von PDO
32.2
Verbindung zur Datenbank herstellen
32.3
DSN für verschiedene Datenbanksysteme
32.4
Einfache Abfragen ausführen
32.5
Prepared Statements
32.6
Daten einfügen
32.7
Daten aktualisieren
32.8
Daten löschen
32.9
Verschiedene Methoden zum Abrufen von Ergebnissen
32.10
Transaktionen
32.11
Mit großen Datenmengen umgehen
32.12
SQL-Injection vermeiden
32.13
Ein einfaches Datenbank-Wrapper-Beispiel
33
MySQL/MariaDB-Integration
33.1
Unterschiede zwischen MySQL und MariaDB
33.2
Verbindungsherstellung
33.3
Wichtige MySQL/MariaDB-spezifische Einstellungen
33.4
MySQL-spezifische SQL-Syntax
33.5
Arbeiten mit AUTO_INCREMENT
33.6
MySQL/MariaDB-Datentypen in PHP
33.7
Optimierte Abfragen für große Datensätze
33.8
Volltextsuche in MySQL/MariaDB
33.9
Transaktionen und Sperren
33.10
Optimierungen für MySQL/MariaDB
33.11
Datenbankverbindungen und Connection Pooling
33.12
MySQL/MariaDB Replikation und Load Balancing
33.13
Migrationen und Schemaverwaltung