Dans cet article, nous allons explorer le composant Symfony Filesystem, qui fournit des méthodes utiles pour interagir avec un système de fichiers. Après l’installation et la configuration, nous allons créer quelques exemples concrets de son utilisation..
Le plus souvent, vous aurez besoin d'interagir avec un système de fichiers si vous utilisez des applications PHP. Dans la plupart des cas, vous finissez par utiliser les fonctions principales de PHP ou créez votre propre classe de wrapper personnalisée pour obtenir les fonctionnalités souhaitées. De toute façon, il est difficile de maintenir sur une longue période. Il vous faut donc une bibliothèque bien entretenue et facile à utiliser. C'est là qu'intervient le composant Symfony Filesystem.
Le composant Symfony Filesystem fournit des méthodes d’emballage utiles qui facilitent l’interaction du système de fichiers en une expérience amusante. Voyons rapidement ce dont il est capable:
Dans cet article, je vais vous montrer comment libérer le pouvoir du composant Symfony Filesystem. Comme d'habitude, nous commencerons par les instructions d'installation et de configuration, puis nous implémenterons quelques exemples concrets pour illustrer les concepts clés..
Dans cette section, nous allons installer le composant Symfony Filesystem. Je suppose que vous avez déjà installé Composer sur votre système, car nous en aurons besoin pour installer le composant système de fichiers disponible sur Packagist..
Allez-y, installez le composant Filesystem en utilisant la commande suivante.
$ composer nécessite symfony / système de fichiers
Cela aurait dû créer un composer.json fichier, qui devrait ressembler à ceci:
"require": "symfony / système de fichiers": "^ 4.1"
C'est donc la partie installation, mais comment êtes-vous censé l'utiliser? En fait, il s’agit simplement d’inclure le autoload.php fichier créé par Composer dans votre application, comme indiqué dans l'extrait suivant.
Dans cette section, nous allons créer un exemple qui montre comment utiliser le composant Système de fichiers dans vos applications pour effectuer diverses opérations sur le système de fichiers..
Pour commencer, allons de l'avant et créons le index.php fichier avec le contenu suivant.
Ici, nous avons initialisé le
Système de fichiers
objecter à$ fsObject
et enregistré le répertoire en cours dans$ current_dir_path
. Dans les prochaines sections, nous utiliserons$ fsObject
effectuer différentes opérations.Faire un nouveau répertoire
D'abord, nous allons créer un nouveau répertoire.
// crée un nouveau répertoire try $ new_dir_path = $ current_dir_path. "/ toto"; if (! $ fsObject-> existe ($ 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 ($ old); catch (IOExceptionInterface $ exception) echo "Erreur lors de la création du répertoire à". $ exception-> getPath ();Ici, nous avons utilisé le
existe
méthode pour vérifier si le foo le répertoire existe déjà avant de le créer.Ensuite, nous avons utilisé le
mkdir
méthode pour créer le foo répertoire avec le 0775 autorisations, ce qui signifie lisible et exécutable par tous, mais uniquement accessible en écriture par le propriétaire du fichier et son groupe. (C’est la notation octale pour les autorisations du système de fichiers. Pour en savoir plus, consultez cette ventilation de la notation octale.) De plus, nous avons utilisé le chown et chgrp méthodes pour changer le propriétaire et le groupe du foo annuaire.Créer un nouveau fichier et ajouter du contenu
Dans cette section, nous allons créer un nouveau fichier et ajouter du contenu à ce fichier..
// crée un nouveau fichier et ajoute du contenu essayez $ new_file_path = $ current_dir_path. "/foo/bar.txt"; if (! $ fsObject-> existe ($ new_file_path)) $ fsObject-> touch ($ new_file_path); $ fsObject-> chmod ($ new_file_path, 0777); $ fsObject-> dumpFile ($ new_file_path, "Ajout de contenu factice au fichier bar.txt. \ n"); $ fsObject-> appendToFile ($ new_file_path, "Ceci devrait être ajouté à la fin du fichier. \ n"); catch (IOExceptionInterface $ exception) echo "Erreur de création du fichier à". $ exception-> getPath ();Ici, nous avons utilisé le
toucher
méthode pour créer un nouveau fichier et ensuite utiliséchmod
pour définir ses autorisations sur 0777-lisible globalement, accessible en écriture et exécutable.Une fois le fichier créé, vous pouvez utiliser le
dumpFile
méthode pour ajouter du contenu dans ce fichier. Par ailleurs, si vous souhaitez ajouter du contenu au fichier déjà existant, vous pouvez utiliser leappendToFile
méthode, comme indiqué dans l'exemple ci-dessus.Copier un répertoire
Jusqu'à présent, nous avons créé le foo répertoire et le bar.txt déposer en utilisant le
$ fsObject
objet. Dans cette section, nous verrons comment copier un répertoire avec le contenu.// copie un répertoire try $ src_dir_path = $ current_dir_path. "/ toto"; $ dest_dir_path = $ current_dir_path. "/ foo_copy"; if (! $ fsObject-> existe ($ dest_dir_path)) $ fsObject-> miroir ($ src_dir_path, $ dest_dir_path); catch (IOExceptionInterface $ exception) echo "Erreur lors de la copie du répertoire à". $ exception-> getPath ();Comme vous pouvez le constater, nous avons d’abord construit les noms de chemins avec concaténation de chaînes. Ensuite, une fois que nous nous sommes assurés que le répertoire n’existait pas déjà, utilisez la commande
existe
méthode, nous avons utilisé lemiroir
méthode pour copier le foo répertoire dans le foo_copy annuaire.Supprimer un répertoire
Enfin, voyons comment supprimer un répertoire.
// supprime un répertoire try $ arr_dirs = array ($ chemin_dir_current. "/ foo", $ chemin_dir_courant. "/ foo_copy"); $ fsObject-> remove ($ arr_dirs); catch (IOExceptionInterface $ exception) echo "Erreur lors de la suppression du répertoire à". $ exception-> getPath ();Encore une fois, il est assez simple de supprimer un répertoire, vous utilisez simplement le
retirer
méthode.Vous pouvez trouver le code complet à index.php dans notre repo GitHub.
Conclusion
Voilà donc une brève introduction au composant Symfony Filesystem. Le composant Symfony Filesystem fournit des méthodes qui facilitent l’interaction avec un système de fichiers. Nous avons examiné comment installer le composant et nous avons créé une poignée d'exemples pour illustrer divers aspects du composant..
J'espère que vous avez apprécié cet article et n'hésitez pas à poster vos impressions en utilisant le flux ci-dessous!