File-Handling

Einleitung

Für die Erstellung und Pflege von Dateien und Verzeichnissen stehen die PHP-Classes rex_file und rex_dir zur Verfügung. Nachfolgend werden die Aufgaben der darin enthaltenen Methoden gelistet.

In den Methoden müsen korrekte Pfade angegeben werden. Im Kapitel Pfade (rex_path, rex_url) finden sich dazu alle erforderlichen Informationen.

rex_file

Die Class rex_file kümmert sich um das Handling einzelner Dateien. Hier stehen Methoden zum Einlesen, Schreiben und zur Ausgabe von Dateien aus und im Dateisystem zur Verfügung.

Quellcode auf GitHub

rex_file::get

Mit der Methode get wird eine Datei aus dem Dateisystem eingelesen. Ein weiterer Parameter erlaubt die Ausgabe eines Default-Wertes bzw. Fehlermedlung, wenn die Datei nicht gelesen werden kann (default: NULL).

rex_file::get($file, $default = null);

Beispiel:

$data = rex_file::get(rex_path::frontend('/assets/styles.css'),'not available');

rex_file::getConfig

Mit der Methode getConfig kann eine Config-Datei eingelesen werden. Kann die Datei nicht gelesen werden, kann ein Default-Wert zurückgegeben werden (default: NULL).

Diese Methode wird hauptsächlich vom Core verwendet. AddOns sollten auf die Möglichkeiten der package.yml, Properties und rex_config zurückgreifen.

rex_file::getConfig($file, $default = []);

Beispiel: Einlesen der REDAXO Config

$config = rex_file::getConfig('config.yml');

rex_file::getCache

Mit der Methode getCache wird eine Datei aus dem Cache eingelesen. Ein weiterer Parameter erlaubt die Ausgabe eines Default-Wertes bzw. Fehlermedlung (wenn nicht festgelegt NULL), wenn die Datei nicht gelesen werden kann.

rex_file::getCache($file, $default = []);

Beispiel:

echo (rex_file::getCache(rex_path::addonCache('meinaddon').'blindtext.txt'));

rex_file::put

Die Methode put schreibt Content in eine Datei. Existiert die Datei noch nicht, wird sie erstellt. Die Rückgabe bei Erfolg ist TRUE, sonst FALSE. Vorhandene Inhalte der Datei werden überschrieben.

rex_file::put($file, $content);

Beispiel:

$css = 'body { background: #eee;}
p { line-height: 1.2em;}
';
$success = rex_file::put(rex_path::frontend('/assets/new_styles.css'),$css);

rex_file::append

Die Methode append schreibt Content an das Ende einer Datei. Existiert die Datei noch nicht, wird sie erstellt. Die Rückgabe bei Erfolg ist TRUE, sonst FALSE. Es kann ein individueller Trenner definiert werden, der Standard ist leer.

rex_file::append($file, $content, $delimiter = '');

Beispiel:

$file = "meine_datei.txt";
$content = "Neuer Inhalt";
$delimiter = "\n"; // Optional: Trennzeichen, z.B. Zeilenumbruch

if (rex_file::append($file, $content, $delimiter)) {
    echo "Inhalt erfolgreich hinzugefügt.";
} else {
    echo "Fehler beim Hinzufügen des Inhalts.";
}

rex_file::putConfig

Die Methode putConfig schreibt Konfigurationsdaten in eine Config-Datei. Die Rückgabe bei Erfolg ist TRUE, sonst FALSE.

Diese Methode wird hauptsächlich vom Core verwendet. AddOns sollten auf die Möglichkeiten der package.yml, Properties und rex_config zurückgreifen.

rex_file::putConfig($file, $content);

rex_file::putCache

Die Methode putCache schreibt Daten in den Cache. Bei Erfolg TRUE, sonst FALSE.

rex_file::putCache($file, $content);

Beispiel:

$content = '
Dies ist ein Typoblindtext. An ihm kann man sehen, ob alle Buchstaben da sind und wie sie aussehen.
';
rex_file::putCache(rex_path::addonCache('meinaddon').'blindtext.txt',$content);

Der gecachte Inhalt kann dann mit getCache abgerufen werden:

echo (rex_file::getCache(rex_path::addonCache('meinaddon').'blindtext.txt'));

rex_file::copy

Die Methode copy ermöglicht das Kopieren einer einer Datei zu einem Verzeichnis oder Datei. Es müssen eine Quell- und ein Zielpfad eingegeben werden. Die Rückgabe bei Erfolg ist TRUE, sonst FALSE.

rex_file::copy($srcfile, $dstfile);

rex_file::move

Die Methode move ermöglicht das Verschieben oder Umbenennen einer Datei. Es müssen ein Quell- und ein Zielpfad angegeben werden. Die Rückgabe bei Erfolg ist TRUE, sonst FALSE.

rex_file::move($srcfile, $dstfile);

rex_file::delete

Die Methode delete ermöglicht das Löschen einer einer Datei. Die Rückgabe bei Erfolg ist TRUE, sonst FALSE.

rex_file::delete($file);

rex_file::extension

Die Methode extension liefert als Rückgabe die Dateiendung einer Datei.

rex_file::extension($file);

rex_file::mimeType

Die Methode mimeType liefert den MimeType einer Datei.

$extension = rex_file::mimeType($file);

z.B.:

  • application/javascript
  • image/svg+xml
  • video/mpeg

rex_file::formattedSize

Die Methode formattedSize liefert eine benutzerfreundliche Ausgabe der Dateigröße einer Datei

$filesize = rex_file::formattedSize($file);

rex_file::getOutput

getOutput führt die angegebene Datei aus und gibt das Ergebnis aus.

rex_file::getOutput($file);

rex_dir

Die Class rex_dir kümmert sich um das Handling von Verzeichnissen. Hier stehen Methoden zum Erstellen, Kopieren und Löschen von Verzeichnissen zur Verfügung.

Quellcode auf GitHub

rex_dir::create

create erstellt ein bzw. mehrere Verzeichnisse. Ist der Parameter $recursive auf true gestellt (Standard), wird der komplette Pfad inkl. angegebener Unterverzeichnisse erstellt. Bei false, müssen die angegebenen Unterverzeichnisse bereits bestehen. Rückgabe bei Erfolg ist TRUE, sonst FALSE.

rex_dir::create($dir, $recursive = true);

rex_dir::isWritable

isWritable prüft ob Schreibrechte für das Verzeichnis bestehen. Rückgabe bei Erfolg ist TRUE, sonst FALSE.

rex_dir::isWritable($dir);

rex_dir::copy

copy kopiert ein Verzeichnis zum angegebenen Ziel. Rückgabe bei Erfolg ist TRUE, sonst FALSE.

rex_dir::copy($srcdir, $dstdir);

rex_dir::delete

delete löscht ein Verzeichnis rekursiv. Wird $deleteSelf auf false gesetzt werden nur die Unterverzeichnisse gelöscht. Rückgabe bei Erfolg ist TRUE, sonst FALSE.

rex_dir::delete($dir, $deleteSelf = true);

rex_dir::deleteFiles

deleteFiles löscht alle Deteien im angegeben Verzeichnis und der Unterverzeichnisse. Wird $recursive auf false gesetzt werden die Dateien der Unterverzeichnisse nicht gelöscht. Rückgabe bei Erfolg ist TRUE, sonst FALSE.

rex_dir::deleteFiles($dir, $recursive = true);

Artikel bearbeiten