In dit artikel gaan we de Symfony-bestandssysteemcomponent verkennen, die nuttige methoden biedt voor interactie met een bestandssysteem. Na installatie en configuratie maken we een paar voorbeelden uit de praktijk van hoe deze te gebruiken.
Vaker wel dan niet, moet je een bestandssysteem gebruiken als je te maken hebt met PHP-applicaties. In de meeste gevallen gebruik je uiteindelijk de kern PHP-functies of maak je je eigen aangepaste wrapperklasse om de gewenste functionaliteit te bereiken. Hoe dan ook, het is moeilijk om te behouden over een langere periode van tijd. Dus wat je nodig hebt is een bibliotheek die goed onderhouden en gebruiksvriendelijk is. Dat is waar het Symfony-bestandssysteemonderdeel in komt.
Het Symfony-bestandssysteem biedt handige wrapper-methoden die de interactie van het bestandssysteem een fluitje van een cent en een leuke ervaring maken. Laten we snel kijken naar waar het toe in staat is:
In dit artikel laat ik u zien hoe u de kracht van de Symfony-bestandssysteemcomponent kunt ontketenen. Zoals gewoonlijk beginnen we met installatie- en configuratie-instructies en vervolgens implementeren we een aantal voorbeelden uit de praktijk om de belangrijkste concepten te demonstreren.
In deze sectie gaan we het Symfony-bestandssysteem installeren. Ik ga ervan uit dat u Composer al in uw systeem heeft geïnstalleerd, omdat we het nodig hebben om de bestandssystemen die beschikbaar zijn op Packagist te installeren.
Dus ga je gang en installeer het bestandssysteem component met behulp van de volgende opdracht.
$ composer vereist symfony / bestandssysteem
Dat had een moeten creëren composer.json bestand, dat er als volgt uit moet zien:
"require": "symfony / filesystem": "^ 4.1"
Dus dat is het installatiedeel, maar hoe moet je het gebruiken? In feite is het gewoon een kwestie van het opnemen van de autoload.php bestand gemaakt door Composer in uw toepassing, zoals getoond in het volgende fragment.
In deze sectie maken we een voorbeeld dat laat zien hoe u het bestandssysteemonderdeel in uw toepassingen zou kunnen gebruiken om verschillende bestandssysteembewerkingen uit te voeren.
Om te beginnen, laten we doorgaan en het maken index.php bestand met de volgende inhoud.
Hier hebben we het
Bestandssysteem
bezwaar tegen$ fsObject
en de huidige map is opgeslagen in$ current_dir_path
. In de komende secties zullen we gebruiken$ fsObject
om verschillende bewerkingen uit te voeren.Maak een nieuwe map
Eerst maken we een nieuwe map.
// maak een nieuwe map probeer $ new_dir_path = $ current_dir_path. "/ Foo"; if (! $ fsObject-> exists ($ 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 ($ oud); catch (IOExceptionInterface $ exception) echo "Fout bij aanmaken map op". $ Buitenge-> getPath ();Hier hebben we de
bestaat
methode om te controleren of de foo map bestaat al voordat u deze hebt gemaakt.Vervolgens hebben we de
mkdir
methode om het te maken foo map met de 0775 permissies, wat betekent leesbaar en uitvoerbaar voor iedereen, maar alleen beschrijfbaar door de eigenaar van het bestand en hun groep. (Dit is de octale notatie voor machtigingen voor het bestandssysteem - voor meer informatie, bekijk dit overzicht van octale notatie.) Verder hebben we de chown en chgrp methoden om de eigenaar en groep van de te wijzigen foo directory.Maak een nieuw bestand en voeg inhoud toe
In deze sectie maken we een nieuw bestand en voegen we inhoud toe aan dat bestand.
// maak een nieuw bestand aan en voeg inhoud toe probeer $ new_file_path = $ current_dir_path. "/Foo/bar.txt"; if (! $ fsObject-> exists ($ new_file_path)) $ fsObject-> touch ($ new_file_path); $ fsObject-> chmod ($ new_file_path, 0777); $ fsObject-> dumpFile ($ new_file_path, "Toevoegen van dummy content aan bar.txt bestand. \ n"); $ fsObject-> appendToFile ($ new_file_path, "Dit moet worden toegevoegd aan het einde van het bestand. \ n"); catch (IOExceptionInterface $ exception) echo "Fout bij aanmaken van bestand op". $ Buitenge-> getPath ();Hier hebben we de
aanraken
methode om een nieuw bestand te maken en vervolgens te gebruikenchmod
om zijn permissies in te stellen 0777-globaal leesbaar, beschrijfbaar en uitvoerbaar.Nadat het bestand is gemaakt, kunt u de
dumpfile
methode om inhoud in dat bestand toe te voegen. Aan de andere kant, als u inhoud aan het reeds bestaande bestand wilt toevoegen, kunt u deappendToFile
methode, zoals getoond in het bovenstaande voorbeeld.Kopieer een map
Tot dusverre hebben we het foo map en de bar.txt bestand met behulp van de
$ fsObject
voorwerp. In deze sectie zullen we zien hoe u een map samen met de inhoud kopieert.// kopieer een directory probeer $ src_dir_path = $ current_dir_path. "/ Foo"; $ dest_dir_path = $ current_dir_path. "/ Foo_copy"; if (! $ fsObject-> exists ($ dest_dir_path)) $ fsObject-> mirror ($ src_dir_path, $ dest_dir_path); catch (IOExceptionInterface $ exception) echo "Fout bij kopiëren van map op". $ Buitenge-> getPath ();Zoals u kunt zien, hebben we eerst de padnamen met string-aaneenschakeling opgebouwd. Vervolgens hebben we ervoor gezorgd dat de map niet al bestond met behulp van de
bestaat
methode, we gebruikten despiegel
methode om het te kopiëren foo map in de foo_copy directory.Verwijder een directory
Laten we tot slot zien hoe een map kan worden verwijderd.
// verwijder een map probeer $ arr_dirs = array ($ current_dir_path. "/ foo", $ current_dir_path. "/ foo_copy"); $ FsObject-> verwijderen ($ arr_dirs); catch (IOExceptionInterface $ exception) echo "Fout bij verwijderen van map op". $ Buitenge-> getPath ();Nogmaals, het is vrij eenvoudig om een directory te verwijderen, je gebruikt gewoon de
verwijderen
methode.Je kunt de volledige code vinden op index.php in onze GitHub repo.
Conclusie
Dus dat is een korte inleiding tot het Symfony-bestandssysteemcomponent. Het Symfony-bestandssysteemcomponent biedt methoden die interactie met een bestandssysteem een fluitje van een cent maken. We hebben gekeken hoe het onderdeel te installeren en we hebben een handvol voorbeelden gemaakt om verschillende aspecten van het onderdeel te demonstreren.
Ik hoop dat je dit artikel leuk vond en aarzel niet om je mening te plaatsen via de onderstaande feed!