So verwenden Sie die Symfony-Dateisystemkomponente

In diesem Artikel wird die Symfony Filesystem-Komponente beschrieben, die nützliche Methoden für die Interaktion mit einem Dateisystem bietet. Nach der Installation und Konfiguration erstellen wir einige praktische Beispiele für die Verwendung.

Die Symfony-Dateisystemkomponente

In den meisten Fällen müssen Sie mit einem Dateisystem interagieren, wenn Sie mit PHP-Anwendungen arbeiten. In den meisten Fällen verwenden Sie entweder die PHP-Kernfunktionen oder erstellen eine eigene benutzerdefinierte Wrapper-Klasse, um die gewünschte Funktionalität zu erreichen. In jedem Fall ist es schwierig, über einen längeren Zeitraum zu warten. Was Sie also brauchen, ist eine Bibliothek, die gut gepflegt und einfach zu bedienen ist. An dieser Stelle kommt die Symfony Filesystem-Komponente ins Spiel.

Die Symfony Filesystem-Komponente bietet nützliche Wrapper-Methoden, die die Dateisystem-Interaktion zu einem Kinderspiel machen. Schauen wir uns kurz an, wozu es in der Lage ist:

  • ein Verzeichnis erstellen
  • eine Datei erstellen
  • Dateiinhalt bearbeiten
  • Ändern des Besitzers und der Gruppe einer Datei oder eines Verzeichnisses
  • Symlink erstellen
  • Eine Datei oder ein Verzeichnis kopieren
  • Entfernen einer Datei oder eines Verzeichnisses
  • und mehr

In diesem Artikel zeige ich Ihnen, wie Sie die Symfony Filesystem-Komponente nutzen können. Wie üblich beginnen wir mit Installations- und Konfigurationsanweisungen. Anschließend werden einige praktische Beispiele implementiert, um die wichtigsten Konzepte zu veranschaulichen.

Installation und Konfiguration

In diesem Abschnitt installieren wir die Symfony Filesystem-Komponente. Ich gehe davon aus, dass Sie Composer bereits in Ihrem System installiert haben, da wir dies zur Installation der bei Packagist verfügbaren Dateisystemkomponente benötigen.

Fahren Sie fort und installieren Sie die Dateisystemkomponente mit dem folgenden Befehl.

$ composer erfordert ein Symfony / Dateisystem

Das hätte einen schaffen sollen composer.json Datei, die so aussehen sollte:

"required": "symfony / filesystem": "^ 4.1"

Das ist also der Installationsteil, aber wie soll man es verwenden? In der Tat ist es nur eine Frage der Einbeziehung der autoload.php Datei, die von Composer in Ihrer Anwendung erstellt wurde, wie im folgenden Snippet gezeigt.

Ein reales Beispiel

In diesem Abschnitt erstellen wir ein Beispiel, in dem veranschaulicht wird, wie Sie die Dateisystemkomponente in Ihren Anwendungen verwenden können, um verschiedene Dateisystemvorgänge auszuführen.

Beginnen wir mit dem Erstellen des index.php Datei mit folgendem Inhalt.

Hier haben wir das initialisiert Dateisystem Gegenstand zu $ fsObject und das aktuelle Verzeichnis in gespeichert $ current_dir_path. In den nächsten Abschnitten werden wir verwenden $ fsObject verschiedene Operationen ausführen.

Erstellen Sie ein neues Verzeichnis

Zuerst erstellen wir ein neues Verzeichnis.

// Ein neues Verzeichnis erstellen Versuchen Sie $ new_dir_path = $ current_dir_path. "/ foo"; if (! $ fsObject-> existiert ($ new_dir_path)) $ old = umask (0); $ fsObject-> mkdir ($ new_dir_path, 0775); $ fsObject-> chown ($ new_dir_path, "www-data"); $ fsObject-> chgrp ($ new_dir_path, "www-data"); umask ($ old);  catch (IOExceptionInterface $ exception) echo "Fehler beim Erstellen des Verzeichnisses um". $ exception-> getPath (); 

Hier haben wir die verwendet existiert Methode, um zu überprüfen, ob die foo Das Verzeichnis existiert bereits vor dem Erstellen.

Als nächstes benutzten wir die mkdir Methode zum Erstellen der foo Verzeichnis mit der 0775 Berechtigungen, dh lesbar und ausführbar für alle, jedoch nur für den Dateieigentümer und seine Gruppe. (Dies ist die oktale Notation für Dateisystemberechtigungen. Weitere Informationen finden Sie in dieser Aufteilung der oktalen Notation.) Außerdem haben wir die chown und chgrp Methoden zum Ändern des Besitzers und der Gruppe von foo Verzeichnis.

Erstellen Sie eine neue Datei und fügen Sie Inhalt hinzu

In diesem Abschnitt erstellen wir eine neue Datei und fügen der Datei Inhalt hinzu.

// Eine neue Datei erstellen und Inhalte hinzufügen try $ new_file_path = $ current_dir_path. "/foo/bar.txt"; if (! $ fsObject-> existiert ($ new_file_path)) $ fsObject-> touch ($ new_file_path); $ fsObject-> chmod ($ new_file_path, 0777); $ fsObject-> dumpFile ($ new_file_path, "Hinzufügen von Dummy-Inhalten zur Datei bar.txt. \ n"); $ fsObject-> appendToFile ($ new_file_path, "Dies sollte am Ende der Datei hinzugefügt werden. \ n");  catch (IOExceptionInterface $ exception) echo "Fehler beim Erstellen der Datei um". $ exception-> getPath (); 

Hier haben wir die verwendet berühren Methode zum Erstellen einer neuen Datei und dann verwendet chmod um seine Berechtigungen auf zu setzen 0777-global lesbar, beschreibbar und ausführbar.

Sobald die Datei erstellt wurde, können Sie die dumpFile Methode zum Hinzufügen von Inhalten in dieser Datei. Wenn Sie der bereits vorhandenen Datei jedoch Inhalte hinzufügen möchten, können Sie das verwenden appendToFile Methode, wie im obigen Beispiel gezeigt.

Kopieren Sie ein Verzeichnis

Bisher haben wir die erstellt foo Verzeichnis und die bar.txt Datei mit der $ fsObject Objekt. In diesem Abschnitt erfahren Sie, wie Sie ein Verzeichnis zusammen mit dem Inhalt kopieren.

// kopiere ein Verzeichnis try $ src_dir_path = $ current_dir_path. "/ foo"; $ dest_dir_path = $ current_dir_path. "/ foo_copy"; if (! $ fsObject-> existiert ($ dest_dir_path)) $ fsObject-> mirror ($ src_dir_path, $ dest_dir_path);  catch (IOExceptionInterface $ exception) echo "Fehler beim Kopieren des Verzeichnisses um". $ exception-> getPath (); 

Wie Sie sehen, haben wir zunächst die Pfadnamen mit String-Verkettung erstellt. Dann haben wir sichergestellt, dass das Verzeichnis nicht bereits vorhanden ist existiert Methode verwendeten wir die Spiegel Methode zum Kopieren der foo Verzeichnis in die foo_copy Verzeichnis.

Entfernen Sie ein Verzeichnis

Schließlich wollen wir sehen, wie man ein Verzeichnis entfernt.

// Entferne ein Verzeichnis try $ arr_dirs = array ($ current_dir_path. "/ foo", $ current_dir_path. "/ foo_copy"); $ fsObject-> remove ($ arr_dirs);  catch (IOExceptionInterface $ exception) echo "Fehler beim Löschen des Verzeichnisses um". $ exception-> getPath (); 

Wiederum ist es ziemlich unkompliziert, ein Verzeichnis zu löschen Löschen Methode.

Den vollständigen Code finden Sie unter index.php in unserem GitHub Repo.

Fazit

Das ist also eine kurze Einführung in die Symfony Filesystem-Komponente. Die Symfony Filesystem-Komponente stellt Methoden bereit, die die Interaktion mit einem Dateisystem zu einem Kinderspiel machen. Wir haben uns die Installation der Komponente angesehen und einige Beispiele erstellt, um die verschiedenen Aspekte der Komponente zu veranschaulichen.

Ich hoffe, dass Ihnen dieser Artikel gefallen hat, und Sie können Ihre Gedanken mit dem untenstehenden Feed posten!