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.
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:
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.
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.
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ändaschmod
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ändaappendToFile
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ändespegel
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!