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.
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:
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.
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.
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 verwendetchmod
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 verwendenappendToFile
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 dieSpiegel
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!