Files
michaelschiemer/src/Framework/Filesystem/Storage.php
Michael Schiemer 55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00

124 lines
2.8 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Framework\Filesystem;
use App\Framework\Async\FiberManager;
interface Storage
{
/**
* Permissions-Checker für dieses Storage
*/
public PermissionChecker $permissions { get; }
/**
* Fiber-Manager für asynchrone Operationen
*/
public FiberManager $fiberManager { get; }
/**
* Liest den Inhalt einer Datei
*/
public function get(string $path): string;
/**
* Speichert Inhalt in einer Datei
*/
public function put(string $path, string $content): void;
/**
* Prüft, ob eine Datei existiert
*/
public function exists(string $path): bool;
/**
* Löscht eine Datei
*/
public function delete(string $path): void;
/**
* Kopiert eine Datei
*/
public function copy(string $source, string $destination): void;
/**
* Ermittelt die Größe einer Datei in Bytes
*/
public function size(string $path): int;
/**
* Ermittelt das letzte Änderungsdatum einer Datei
*/
public function lastModified(string $path): int;
/**
* Ermittelt MIME-Typ einer Datei
*/
public function getMimeType(string $path): string;
/**
* Prüft, ob eine Datei lesbar ist
*/
public function isReadable(string $path): bool;
/**
* Prüft, ob eine Datei schreibbar ist
*/
public function isWritable(string $path): bool;
/**
* Liest ein Verzeichnis aus
*
* @return array<string> Liste von Dateipfaden
*/
public function listDirectory(string $directory): array;
/**
* Erstellt ein Verzeichnis
*/
public function createDirectory(string $path, int $permissions = 0755, bool $recursive = true): void;
/**
* Erstellt ein File-Objekt mit Lazy-Loading
*/
public function file(string $path): File;
/**
* Erstellt ein Directory-Objekt mit Lazy-Loading
*/
public function directory(string $path): Directory;
/**
* Führt mehrere Operationen parallel aus (explizite Batch-Operation)
*
* @param array<string, callable> $operations
* @return array<string, mixed>
*/
public function batch(array $operations): array;
/**
* Lädt mehrere Dateien parallel
*
* @param array<string> $paths
* @return array<string, string>
*/
public function getMultiple(array $paths): array;
/**
* Speichert mehrere Dateien parallel
*
* @param array<string, string> $files [path => content]
*/
public function putMultiple(array $files): void;
/**
* Lädt Metadata für mehrere Dateien parallel
*
* @param array<string> $paths
* @return array<string, FileMetadata>
*/
public function getMetadataMultiple(array $paths): array;
}