Files
michaelschiemer/src/Framework/Filesystem
Michael Schiemer 5050c7d73a docs: consolidate documentation into organized structure
- 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
2025-10-05 11:05:04 +02:00
..
2025-07-17 16:24:20 +02:00

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.