Î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.
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:
Î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.
Î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.
Î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țichmod
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 utilizaappendToFile
, 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 folositoglindă
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!