Comment utiliser le composant système de fichiers Symfony

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 composant du système de fichiers Symfony

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:

  • créer un répertoire
  • créer un fichier
  • édition du contenu du fichier
  • changer le propriétaire et le groupe d'un fichier ou d'un répertoire
  • créer un lien symbolique
  • copier un fichier ou un répertoire
  • supprimer un fichier ou un répertoire
  • et plus

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..

Installation et configuration

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.

Un exemple du monde réel

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 le appendToFile 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é le miroir 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!