Slik bruker du Symfony Filesystem Component

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.

Symfony Filesystem Component

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:

  • opprette en katalog
  • oppretter en fil
  • redigering av filinnhold
  • endrer eier og gruppe av en fil eller katalog
  • oppretter en symlink
  • kopiere en fil eller katalog
  • fjerner en fil eller katalog
  • og mer

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.

Installasjon og konfigurering

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.

Et eksempel på ekte verden

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 brukt chmod å 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 bruke appendToFile 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 vi speil 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!