Cum se utilizează Componenta sistemului de fișiere Symfony

În acest articol, vom explora componenta Symfony Filesystem, care oferă metode utile pentru a interacționa cu un sistem de fișiere. După instalare și configurare, vom crea câteva exemple din lumea reală despre cum să le folosim.

Componenta sistemului de fișiere Symfony

De cele mai multe ori, va trebui să interacționați cu un sistem de fișiere dacă aveți de-a face cu aplicații PHP. În cele mai multe cazuri, fie veți termina prin utilizarea funcțiilor de bază ale PHP, fie creați o clasă personalizată pentru a obține funcționalitatea dorită. În orice caz, este dificil să se mențină pe o perioadă mai lungă de timp. Deci, ceea ce aveți nevoie este o bibliotecă bine întreținută și ușor de folosit. Aici intră componenta Symfony Filesystem.

Componenta Symfony Filesystem oferă metode de împachetare utile, care fac interacțiunea sistemului de fișiere o briză și o experiență distractivă. Să ne uităm repede la ce este capabil:

  • crearea unui director
  • crearea unui fișier
  • editarea conținutului fișierului
  • schimbarea proprietarului și a grupului unui fișier sau a unui director
  • crearea unui symlink
  • copierea unui fișier sau a unui director
  • eliminând un fișier sau un director
  • și altele

În acest articol, vă voi arăta cum să dezlănțuiți puterea componentei Symfony Filesystem. Ca de obicei, vom începe cu instrucțiunile de instalare și configurare și apoi vom implementa câteva exemple din lumea reală pentru a demonstra conceptele cheie.

Instalare și configurare

În această secțiune, vom instala componenta Symfony Filesystem. Presupun că ați instalat deja Compozitor în sistemul dvs. deoarece vom avea nevoie de el pentru a instala componenta Fișier Fișiere disponibilă la Packagist.

Așa că mergeți mai departe și instalați componenta Sistem fișier folosind următoarea comandă.

Compozitorul $ necesită simfonie / sistem de fișiere

Asta ar fi trebuit să creeze a composer.json fișier, care ar trebui să arate astfel:

"necesită": "symfony / filesystem": "^ 4.1"

Deci asta este partea de instalare, dar cum ar trebui să o folosești? De fapt, este doar o chestiune de a include autoload.php fișier creat de Compozitor în aplicația dvs., așa cum se arată în fragmentul următor.

Un exemplu în lumea reală

În această secțiune, vom crea un exemplu care demonstrează modul în care ați putea folosi componenta Fișier de fișiere în aplicațiile dvs. pentru a efectua diverse operațiuni de sistem de fișiere.

Pentru început, hai să mergem înainte și să creăm index.php fișier cu următorul conținut.

Aici, am inițializat Sistemul de fișiere obiecte pentru $ fsObject și ați salvat directorul curent la $ current_dir_path. În secțiunile viitoare, vom folosi $ fsObject pentru a efectua diferite operațiuni.

Creați un nou director

În primul rând, vom crea un nou director.

// face un nou director încercați $ new_dir_path = $ current_dir_path. "/ Foo"; dacă ! $ fsObject-> există ($ 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-date"); umask ($ vechi);  captură (excepție IOExceptionInterface $) echo "Eroare la crearea directorului la". $ Excepțional de> getPath (); 

Aici, am folosit-o există pentru a verifica dacă foo director există deja înainte de crearea acestuia.

Apoi, am folosit mkdir metoda de a crea foo director cu 0775 permisiuni, ceea ce înseamnă că poate fi citit și executabil de către toți, dar poate fi scris numai de proprietarul fișierului și de grupul acestora. (Aceasta este notația octalică pentru permisiunile sistemului de fișiere - pentru a afla mai multe, verificați această defalcare a notatiei octale.) Mai mult, am folosit chown și chgrp metodele de schimbare a proprietarului și a grupului foo director.

Creați un fișier nou și adăugați conținut

În această secțiune, vom crea un fișier nou și vom adăuga conținut în acel fișier.

// creați un fișier nou și adăugați conținutul încercați $ new_file_path = $ current_dir_path. "/Foo/bar.txt"; dacă (! $ fsObject-> există ($ new_file_path)) $ fsObject-> atinge ($ new_file_path); $ fsObject-> chmod ($ new_file_path, 0777); $ fsObject-> dumpFile ($ new_file_path, "Adăugarea conținutului inactiv la fișierul bar.txt. \ n"); $ fsObject-> appendToFile ($ new_file_path, "Aceasta trebuie adăugată la sfârșitul fișierului. \ n");  captură (excepție IOExceptionInterface $) echo "Eroare la crearea fișierului la". $ Excepțional de> getPath (); 

Aici, am folosit-o atingere pentru a crea un fișier nou și apoi utilizați chmod pentru a-și stabili permisiunile 0777-citit la nivel global, scris și executabil.

Odată ce fișierul este creat, puteți utiliza dumpFile metoda de adăugare a conținutului în acel fișier. Pe de altă parte, dacă doriți să adăugați conținut la fișierul deja existent, puteți utiliza appendToFile , așa cum se arată în exemplul de mai sus.

Copiați un director

Până acum, am creat-o foo director și bar.txt fișier folosind $ fsObject obiect. În această secțiune, vom vedea cum să copiați un director împreună cu conținutul.

// copiați un director încercați $ src_dir_path = $ current_dir_path. "/ Foo"; $ dest_dir_path = $ calea curentă_dir. "/ Foo_copy"; dacă ! $ fsObject-> există ($ dest_dir_path)) $ fsObject-> mirror ($ src_dir_path, $ dest_dir_path);  captură (excepție IOExceptionInterface $) echo "Eroare la copierea directorului la". $ Excepțional de> getPath (); 

După cum puteți vedea, mai întâi am construit numele căilor cu concatenare șir. Apoi, după ce ne-am asigurat că directorul nu există deja utilizând există metoda, am folosit oglindă metoda de copiere a textului foo director în foo_copy director.

Eliminați un director

În cele din urmă, să vedem cum să eliminăm un director.

// elimina un director încercați $ arr_dirs = array ($ current_dir_path. "/ foo", $ current_dir_path. "/ foo_copy"); $ FsObject-> elimina ($ arr_dirs);  captură (excepție IOExceptionInterface $) echo "Eroare la ștergerea directorului la". $ Excepțional de> getPath (); 

Din nou, este destul de simplu - pentru a șterge un director, pur și simplu utilizați elimina metodă.

Puteți găsi codul complet la index.php în repo GitHub.

Concluzie

Așa că este o scurtă introducere a componentei Symfony Filesystem. Componenta Symfony File System oferă metode care fac o interacțiune cu sistemul de fișiere o briză. Am analizat modul de instalare a componentei și am creat câteva exemple pentru a demonstra diferite aspecte ale componentei.

Sper că te-ai bucurat de acest articol și te simți liber să postezi gândurile tale folosind feedul de mai jos!

Cod