Flysystem PHP: Komplettes Handbuch mit Praxisbeispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Flysystem und warum braucht man es?

Flysystem ist eine leistungsstarke PHP-Bibliothek, die eine einheitliche, universelle Schnittstelle für die Arbeit mit verschiedenen Dateisystemen bereitstellt. Entwickelt von Frank de Jonge, löst sie ein grundlegendes Problem: In realen Projekten ist der Code oft fest an ein bestimmtes Dateisystem gebunden (lokale Festplatte, FTP, Amazon S3, Dropbox usw.). Wenn morgen die Dateispeicherung von einem lokalen Server auf eine Cloud-Instanz verlagert werden muss, müsste ein erheblicher Teil des Codes umgeschrieben werden.

Flysystem abstrahiert diese Komplexität. Sie schreiben den Code einmalig mit einer einheitlichen API und können den "Adapter" (Treiber) des Dateisystems wechseln, ohne die Geschäftslogik der Anwendung zu ändern. Das macht Ihren Code:

  • Flexibel — einfaches Wechseln zwischen Speicherorten.
  • Testbar — Sie können in Tests ein "fiktives" Dateisystem verwenden.
  • Portabel — der Code funktioniert in verschiedenen Umgebungen gleich.

Die Bibliothek wird in bekannten Projekten wie Laravel (als Grundlage für den Storage-Disk), Symfony, Drupal und vielen anderen eingesetzt. Flysystem unterstützt Dutzende von Adaptern: Local, FTP/SFTP, Amazon S3, Google Cloud Storage, Azure Blob Storage, WebDAV, Dropbox und sogar verschlüsselte und Zip-Archive.

Installation

Flysystem wird über Composer installiert. Für die grundlegende Arbeit mit dem lokalen Dateisystem reichen zwei Pakete:

composer require league/flysystem
composer require league/flysystem-local

Wichtig: Ab Version 3.x verwendet Flysystem eine modulare Architektur. Das Hauptpaket league/flysystem enthält nur die Schnittstellen und Basisklassen. Die Adapter (Treiber) werden separat installiert. So können Sie nur das einbinden, was Sie tatsächlich benötigen.

Für andere Dateisysteme:

  • composer require league/flysystem-ftp — für FTP/SFTP
  • composer require league/flysystem-aws-s3-v3 — für Amazon S3
  • composer require league/flysystem-google-cloud-storage — für Google Cloud
  • composer require league/flysystem-memory — für Tests (virtuelles In-Memory-Dateisystem)

Schnellstart

Erstellen wir ein einfaches Beispiel: Schreiben, Lesen und Löschen einer Datei auf der lokalen Festplatte.

<?php
require 'vendor/autoload.php';

use League\Flysystem\Filesystem;
use League\Flysystem\Local\LocalFilesystemAdapter;

// 1. Adapter für das lokale Dateisystem erstellen
// Das Stammverzeichnis angeben, in dem die Dateien gespeichert werden
$adapter = new LocalFilesystemAdapter(__DIR__ . '/storage');

// 2. Filesystem-Instanz erstellen
$filesystem = new Filesystem($adapter);

// 3. Datei schreiben
$filesystem->write('hallo.txt', 'Hallo Welt!');

// 4. Datei lesen
$content = $filesystem->read('hallo.txt');
echo $content; // Ausgabe: Hallo Welt!

// 5. Prüfen, ob die Datei existiert
if ($filesystem->fileExists('hallo.txt')) {
    echo "Datei existiert!";
}

// 6. Datei löschen
$filesystem->delete('hallo.txt');

// 7. Prüfen, ob die Datei gelöscht wurde
echo $filesystem->fileExists('hallo.txt') ? 'Ja' : 'Nein'; // Ausgabe: Nein
?>

Beachten Sie: Wir verwenden keine nativen PHP-Funktionen wie file_put_contents(), fopen() oder ähnliche. Der gesamte Code arbeitet über die einheitliche Filesystem-Schnittstelle.

Wichtige Methoden/Funktionen

Betrachten wir die wichtigsten Methoden von Flysystem. Alle Beispiele gehen davon aus, dass Sie bereits ein $filesystem-Objekt erstellt haben.

1. write() — Neue Datei schreiben

Funktion: Erstellt eine neue Datei oder überschreibt eine vorhandene.

Parameter:

  • string $path — Pfad zur Datei
  • string|resource $contents — Inhalt der Datei (String oder Resource)
  • array $config — optionale Einstellungen (z.B. Sichtbarkeit)

Empfehlungen