- Move 12 markdown files from root to docs/ subdirectories - Organize documentation by category: • docs/troubleshooting/ (1 file) - Technical troubleshooting guides • docs/deployment/ (4 files) - Deployment and security documentation • docs/guides/ (3 files) - Feature-specific guides • docs/planning/ (4 files) - Planning and improvement proposals Root directory cleanup: - Reduced from 16 to 4 markdown files in root - Only essential project files remain: • CLAUDE.md (AI instructions) • README.md (Main project readme) • CLEANUP_PLAN.md (Current cleanup plan) • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements) This improves: ✅ Documentation discoverability ✅ Logical organization by purpose ✅ Clean root directory ✅ Better maintainability
Filesystem-Komponente mit Lazy-Loading
Diese Komponente bietet eine einfache Abstraktion für Dateisystem-Operationen mit Lazy-Loading-Unterstützung für PHP 8.4.
Funktionen
- Abstraktion: Einheitliches Interface für Dateisystem-Operationen
- Lazy-Loading: Optimierte Leistung durch verzögertes Laden von Eigenschaften
- Testbarkeit: In-Memory-Implementierung für Tests
Verwendungsbeispiele
Beispiel 1: Datei mit Lazy-Loading verwenden
// Storage-Implementierung holen
$storage = new FileStorage();
// Datei-Objekt mit Lazy-Loading erstellen
$file = $storage->file('/pfad/zur/datei.txt');
// Hier passiert noch kein Disk-I/O
echo "Datei: {$file->path}\n";
// Erst hier wird der Inhalt tatsächlich geladen
echo "Inhalt: {$file->contents}\n";
// Und hier die Dateigröße
echo "Größe: {$file->size} Bytes\n";
Beispiel 2: Mit Verzeichnissen arbeiten
// Verzeichnis-Objekt mit Lazy-Loading erstellen
$dir = $storage->directory('/pfad/zum/verzeichnis');
// Verzeichnis erstellen, falls es nicht existiert
if (!$dir->exists()) {
$dir->create();
}
// Alle Dateien auflisten (lazy geladen)
foreach ($dir->getFiles() as $file) {
echo "{$file->path}: {$file->size} Bytes\n";
}
Beispiel 3: Dateien kopieren und löschen
$file = $storage->file('/quelle.txt');
// Datei kopieren
$neueFile = $file->copyTo('/ziel.txt');
// Quelldatei löschen
$file->delete();
Technische Details
Die Komponente nutzt die neuen PHP 8.4 Lazy-Loading-Features:
- ReflectionClass::newLazyProxy(): Für File-Objekte mit individuellen Property-Callbacks
- ReflectionClass::newLazyGhost(): Für Directory-Objekte mit einheitlichem Initializer
Die Properties werden erst geladen, wenn sie tatsächlich verwendet werden, was besonders bei Verzeichnislisten und großen Dateien zu erheblichen Leistungsverbesserungen führt.