Så här använder du Symfony Filesystem Component

I den här artikeln ska vi utforska komponenten Symfony Filesystem, som ger användbara metoder för att interagera med ett filsystem. Efter installationen och konfigurationen skapar vi några verkliga exempel på hur du använder det.

Symfony Filesystem Component

Ofta behöver du inte interagera med ett filsystem om du hanterar PHP-applikationer. I de flesta fall slutar du antingen använda de grundläggande PHP-funktionerna eller skapa din egen anpassade wrapparklass för att uppnå önskad funktionalitet. Hur som helst är det svårt att behålla över en längre tid. Så vad du behöver är ett bibliotek som är väl underhållen och lätt att använda. Det är där komponenten Symfony Filesystem kommer in.

Komponenten Symfony Filesystem tillhandahåller användbara omslagsmetoder som gör filsystemets interaktion en vind och en rolig upplevelse. Låt oss snabbt titta på vad den kan:

  • skapa en katalog
  • skapa en fil
  • redigering av filinnehåll
  • ändra ägare och grupp av en fil eller katalog
  • skapa en symlink
  • kopiera en fil eller katalog
  • ta bort en fil eller katalog
  • och mer

I den här artikeln visar jag hur du släpper ut kraften i Symfony Filesystem-komponenten. Som vanligt börjar vi med installations- och konfigurationsinstruktioner, och sedan implementerar vi några exempel på verkligheten för att visa nyckelkoncepten.

Installation och konfiguration

I det här avsnittet ska vi installera komponenten Symfony Filesystem. Jag antar att du redan har installerat Composer i ditt system, eftersom vi behöver det för att installera filsystemkomponenten tillgänglig på Packagist.

Så fortsätt och installera komponenten Filesystem med följande kommando.

$ komponent kräver symfoni / filsystem

Det borde ha skapat en composer.json fil som ska se ut så här:

"kräver": "symfony / filesystem": "^ 4.1"

Så det är installationsdelen, men hur ska du använda den? Faktum är att det bara handlar om att inkludera autoload.php fil skapad av kompositören i din ansökan, som visas i följande kod.

Ett verkligt exempel på världen

I det här avsnittet skapar vi ett exempel som visar hur du kan använda filsystemkomponenten i dina program för att utföra olika filsystemoperationer.

Till att börja med, låt oss gå vidare och skapa index.php fil med följande innehåll.

Här har vi initialiserat Filsystem protestera mot $ fsObject och sparade den aktuella katalogen till $ current_dir_path. I de kommande avsnitten använder vi $ fsObject att utföra olika operationer.

Skapa ett nytt katalog

Först ska vi skapa en ny katalog.

// skapa en ny katalog försök $ new_dir_path = $ current_dir_path. "/ Foo"; om (! $ fsObject-> existerar ($ 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 ($ gammal);  fånga (IOExceptionInterface $ undantag) echo "Fel vid att skapa katalog på". $ I undantags> getPath (); 

Här har vi använt existerar metod för att kontrollera om foo katalog finns redan innan du skapar den.

Därefter använde vi mkdir metod för att skapa foo katalog med 0775 behörigheter, vilket betyder läsbar och körbar av alla, men endast skrivbar av filägaren och deras grupp. (Detta är den oktala notationen för filsystembehörigheter-för att lära sig mer, kolla in denna uppdelning av oktalnotation.) Vidare har vi använt chown och chgrp metoder för att ändra ägare och grupp av foo katalog.

Skapa en ny fil och lägg till innehåll

I det här avsnittet skapar vi en ny fil och lägger till innehåll i den filen.

// skapa en ny fil och lägg till innehållsförsök $ new_file_path = $ current_dir_path. "/Foo/bar.txt"; om (! $ fsObject-> existerar ($ new_file_path)) $ fsObject-> touch ($ new_file_path); $ fsObject-> chmod ($ new_file_path, 0777); $ fsObject-> dumpFile ($ new_file_path, "Lägger till dummy-innehåll i bar.txt-filen. \ n"); $ fsObject-> appendToFile ($ new_file_path, "Detta ska läggas till i slutet av filen. \ n");  fånga (IOExceptionInterface $ undantag) echo "Fel vid att skapa fil på". $ I undantags> getPath (); 

Här har vi använt Rör Metod för att skapa en ny fil och sedan användas chmod att ställa in sina behörigheter till 0777-globalt läsbar, skrivbar och körbar.

När filen är skapad kan du använda dumpfile metod för att lägga till innehåll i den filen. Å andra sidan, om du vill lägga till innehåll i den redan existerande filen, kan du använda appendToFile metod, såsom visas i ovanstående exempel.

Kopiera en katalog

Hittills har vi skapat foo katalog och bar.txt fil med hjälp av $ fsObject objekt. I det här avsnittet ser vi hur du kopierar en katalog tillsammans med innehållet.

// kopiera en katalog försök $ src_dir_path = $ current_dir_path. "/ Foo"; $ dest_dir_path = $ current_dir_path. "/ Foo_copy"; om (! $ fsObject-> existerar ($ dest_dir_path)) $ fsObject-> mirror ($ src_dir_path, $ dest_dir_path);  fånga (IOExceptionInterface $ undantag) echo "Felkopieringskatalog på". $ I undantags> getPath (); 

Som du kan se först byggde vi sökvägarna med strängkonstruktion. Sedan, när vi såg till att katalogen inte existerade redan med existerar metod, vi använde spegel metod för att kopiera foo katalog i foo_copy katalog.

Ta bort en katalog

Slutligen, låt oss se hur man tar bort en katalog.

// ta bort ett katalog försök $ arr_dirs = array ($ current_dir_path. "/ foo", $ current_dir_path. "/ foo_copy"); $ FsObject-> Ta bort ($ arr_dirs);  fångst (IOExceptionInterface $ undantag) echo "Fel vid borttagning av katalog vid". $ I undantags> getPath (); 

Återigen är det ganska enkelt - att ta bort en katalog, du använder bara ta bort metod.

Du kan hitta den fullständiga koden till index.php i vår GitHub repo.

Slutsats

Så det är en kort introduktion till komponenten Symfony Filesystem. Symfony Filesystem-komponenten tillhandahåller metoder som gör samspelet med ett filsystem en bris. Vi tittade på hur man installerade komponenten, och vi skapade en handfull exempel för att demonstrera olika aspekter av komponenten.

Jag hoppas att du har haft den här artikeln, och gärna skicka dina tankar med hjälp av flödet nedan!