I denne artikkelen skal vi utforske Symfony Filesystem-komponenten, som gir nyttige metoder for samhandling med et filsystem. Etter installasjon og konfigurasjon lager vi noen eksempler på hvordan du bruker det.
Oftere enn ikke, må du samhandle med et filsystem hvis du har å gjøre med PHP-applikasjoner. I de fleste tilfeller slutter du enten med de kjente PHP-funksjonene eller lager din egen tilpassede wrapper-klasse for å oppnå ønsket funksjonalitet. Uansett er det vanskelig å opprettholde over en lengre periode. Så det du trenger er et bibliotek som er godt vedlikeholdt og brukervennlig. Det er her komponenten Symfony Filesystem kommer inn.
Symfony Filesystem-komponenten gir nyttige innpakningsmetoder som gjør filsysteminteraksjonen en bris og en morsom opplevelse. La oss raskt se på hva det er i stand til:
I denne artikkelen vil jeg vise deg hvordan du slipper løs strømmen til Symfony Filesystem-komponenten. Som vanlig begynner vi med installasjons- og konfigurasjonsinstruksjoner, og deretter implementerer vi noen eksempler på virkelige verden for å demonstrere nøkkelbegrepene.
I denne delen skal vi installere komponenten Symfony Filesystem. Jeg antar at du allerede har installert Composer i systemet ditt, da vi trenger det for å installere filsystemkomponenten tilgjengelig på Packagist.
Så fortsett og installer komponenten Filesystem ved hjelp av følgende kommando.
$ komponist krever symfony / filsystem
Det burde ha skapt en composer.json fil, som skal se slik ut:
"krever": "symfony / filesystem": "^ 4.1"
Så det er installasjonsdelen, men hvordan skal du bruke den? Faktisk er det bare et spørsmål om å inkludere autoload.php fil opprettet av Komponist i din søknad, som vist i følgende utdrag.
I dette avsnittet oppretter vi et eksempel som viser hvordan du kan bruke filsystemkomponenten i programmene dine til å utføre forskjellige filsystemoperasjoner.
Til å begynne med, la oss gå videre og opprette index.php fil med følgende innhold.
Her har vi initialisert
Filsystem
ha innvendinger$ fsObject
og lagret gjeldende katalog til$ current_dir_path
. I de kommende seksjonene bruker vi$ fsObject
å utføre forskjellige operasjoner.Lag en ny katalog
Først skal vi opprette en ny katalog.
// lage en ny katalog prøve $ new_dir_path = $ current_dir_path. "/ Foo"; hvis (! $ fsObject-> eksisterer ($ 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 ($ gammel); catch (IOExceptionInterface $ unntak) echo "Feil å opprette katalog på". $ Unntak-> getPath ();Her har vi brukt
finnes
metode for å sjekke om foo katalog finnes allerede før du oppretter den.Deretter brukte vi
mkdir
metode for å lage foo katalog med 0775 tillatelser, som betyr lesbar og kjørbar av alle, men bare skrivbar av filens eier og deres gruppe. (Dette er oktalnotasjonen for filsystemtillatelser - for å lære mer, sjekk ut denne sammenbruddet av oktalnotasjon.) Videre har vi brukt chown og chgrp metoder for å endre eier og gruppe av foo katalog.Opprett en ny fil og legg til innhold
I denne delen lager vi en ny fil og legger til innhold i den filen.
// Opprett en ny fil og legg til innholdsforsøk $ new_file_path = $ current_dir_path. "/Foo/bar.txt"; hvis (! $ fsObject-> eksisterer ($ new_file_path)) $ fsObject-> touch ($ new_file_path); $ fsObject-> chmod ($ new_file_path, 0777); $ fsObject-> dumpFile ($ new_file_path, "Legge til dummy innhold til bar.txt fil. \ n"); $ fsObject-> appendToFile ($ new_file_path, "Dette skal legges til slutten av filen. \ n"); fangst (IOExceptionInterface $ unntak) echo "Feil opprette fil på". $ Unntak-> getPath ();Her har vi brukt
ta på
metode for å lage en ny fil og deretter bruktchmod
å sette sine tillatelser til 0777-globalt lesbar, skrivbar og kjørbar.Når filen er opprettet, kan du bruke
dumpfil
metode for å legge til innhold i den filen. På den annen side, hvis du vil legge til innhold i den allerede eksisterende filen, kan du brukeappendToFile
metode, som vist i eksemplet ovenfor.Kopier en katalog
Så langt har vi opprettet foo katalog og bar.txt fil ved hjelp av
$ fsObject
gjenstand. I denne delen ser vi hvordan du kopierer en katalog sammen med innholdet.// Kopier en katalogforsøk $ src_dir_path = $ current_dir_path. "/ Foo"; $ dest_dir_path = $ current_dir_path. "/ Foo_copy"; hvis (! $ fsObject-> eksisterer ($ dest_dir_path)) $ fsObject-> speil ($ src_dir_path, $ dest_dir_path); fangst (IOExceptionInterface $ unntak) echo "Feilkopieringskatalog på". $ Unntak-> getPath ();Som du kan se, bygde vi først stienavnene med strengkonjugering. Så, når vi sørget for at katalogen ikke allerede eksisterte ved hjelp av
finnes
metode, brukte vispeil
metode for å kopiere foo katalog inn i foo_copy katalog.Fjern et katalog
Til slutt, la oss se hvordan du fjerner en katalog.
// fjerne en katalogforsøk $ arr_dirs = array ($ current_dir_path. "/ foo", $ current_dir_path. "/ foo_copy"); $ FsObject-> fjern ($ arr_dirs); fangst (IOExceptionInterface $ unntak) echo "Feil ved å slette katalog på". $ Unntak-> getPath ();Igjen, det er ganske greit å slette en katalog, du bruker bare
fjerne
metode.Du kan finne den komplette koden til index.php i vår GitHub repo.
Konklusjon
Så det er en kort introduksjon til komponenten Symfony Filesystem. Symfony Filesystem-komponenten gir metoder som gjør samspillet med et filsystem en bris. Vi så på hvordan du installerte komponenten, og vi opprettet en håndfull eksempler for å demonstrere ulike aspekter av komponenten.
Jeg håper at du har hatt glede av denne artikkelen, og du er velkommen til å legge inn dine tanker ved å bruke feedet under!