cocoon-projet/storage

Gestion des fichiers et répertoires

0.0.1 2025-02-21 15:45 UTC

This package is auto-updated.

Last update: 2025-04-23 17:45:12 UTC


README

PHP Composer codecov License

Cocoon Storage Manager

Une bibliothèque PHP moderne et puissante pour la gestion des fichiers, basée sur Flysystem.

Pré-requis

PHP Version

Installation

composer require cocoon-projet/storage

Configuration

use Cocoon\StorageManager\Storage;
use Cocoon\StorageManager\StorageConfig;

// Configuration simple
$config = new StorageConfig('/chemin/vers/le/dossier');

// Configuration avancée
$config = new StorageConfig('/chemin/vers/le/dossier', [
    'visibility' => 'public',        // Visibilité des fichiers (public/private)
    'directory_visibility' => 'public', // Visibilité des répertoires
    'case_sensitive' => true,        // Sensibilité à la casse
]);

// Initialisation
Storage::init($config);

Fonctionnalités

Gestion des fichiers

// Écrire un fichier
Storage::put('fichier.txt', 'Contenu');

// Lire un fichier
$contenu = Storage::get('fichier.txt');

// Vérifier l'existence
if (Storage::exists('fichier.txt')) {
    // ...
}

// Supprimer un fichier
Storage::delete('fichier.txt');

// Copier un fichier
Storage::copy('source.txt', 'destination.txt');

// Déplacer un fichier
Storage::move('ancien.txt', 'nouveau.txt');

Gestion des répertoires

// Créer un répertoire
Storage::mkdir('mon-dossier');

// Supprimer un répertoire
Storage::rmdir('mon-dossier');

Recherche de fichiers

Recherche dans un dossier spécifique

// Rechercher dans un dossier spécifique
$fichiers = Storage::find()
    ->in('mon-dossier')
    ->files()
    ->get();

// Rechercher dans plusieurs dossiers
$fichiers = Storage::find()
    ->in(['dossier1', 'dossier2'])
    ->files()
    ->get();

Filtres de recherche

// Rechercher tous les fichiers
$fichiers = Storage::find()
    ->files()
    ->get();

// Rechercher tous les répertoires
$repertoires = Storage::find()
    ->directories()
    ->get();

// Filtrer par taille
$petitsFichiers = Storage::find()
    ->in('mon-dossier')
    ->size('< 1MB')
    ->get();

// Filtrer par date
$fichiersRecents = Storage::find()
    ->in('mon-dossier')
    ->date('> 1 day')
    ->get();

// Filtrer par extension
$fichiersTxt = Storage::find()
    ->in('mon-dossier')
    ->only(['*.txt'])
    ->get();

// Exclure des fichiers
$fichiersNonPhp = Storage::find()
    ->in('mon-dossier')
    ->except(['*.php'])
    ->get();

Tri des résultats

// Trier les résultats
$fichiersTries = Storage::find()
    ->in('mon-dossier')
    ->sortByName()          // Trier par nom
    ->sortByDate()          // Trier par date
    ->sortBySize()          // Trier par taille
    ->sortByExtension()     // Trier par extension
    ->get();

Gestion avancée des fichiers

// Obtenir un gestionnaire de fichier
$fichier = Storage::file('mon-fichier.txt');

// Vérifier le type MIME
$type = $fichier->mimeType();

// Obtenir la taille
$taille = $fichier->size();

// Obtenir la date de modification
$date = $fichier->dateTime();

// Obtenir le nom
$nom = $fichier->name();

Fonctionnalités avancées

Filtres de recherche

  • files() : Rechercher uniquement les fichiers
  • directories() : Rechercher uniquement les répertoires
  • in($path) : Rechercher dans un dossier spécifique
  • size() : Filtrer par taille (ex: '< 1MB', '> 100KB')
  • date() : Filtrer par date (ex: '> 1 day', '< 1 week')
  • only() : Inclure uniquement certains fichiers (ex: ['.txt', '.pdf'])
  • except() : Exclure certains fichiers (ex: ['.tmp', '.log'])

Tri des résultats

  • sortByName() : Trier par nom
  • sortByDate() : Trier par date
  • sortBySize() : Trier par taille
  • sortByExtension() : Trier par extension

Exemple complet

use Cocoon\StorageManager\Storage;
use Cocoon\StorageManager\StorageConfig;

// Configuration
$config = new StorageConfig(__DIR__ . '/storage', [
    'visibility' => 'public',
    'directory_visibility' => 'public',
    'case_sensitive' => true,
]);

// Initialisation
Storage::init($config);

// Création de dossiers
Storage::mkdir('documents');
Storage::mkdir('images');
Storage::mkdir('cache');

// Recherche dans des dossiers spécifiques
$fichiersDocuments = Storage::find()
    ->in('documents')
    ->files()
    ->get();

$fichiersCache = Storage::find()
    ->in('cache')
    ->files()
    ->get();

// Recherche avec filtres
$fichiersRecents = Storage::find()
    ->in(['documents', 'images'])
    ->files()
    ->date('> 1 day')
    ->sortByDate()
    ->get();

Bonnes pratiques

  1. Toujours initialiser le stockage avec une configuration appropriée
  2. Utiliser la méthode in() pour limiter la recherche à des dossiers spécifiques
  3. Combiner les filtres pour des recherches plus précises
  4. Gérer les exceptions pour les opérations critiques
  5. Nettoyer les fichiers temporaires après utilisation
  6. Utiliser des chemins relatifs pour la portabilité

Tests

composer test

Licence

MIT License - Voir le fichier LICENSE pour plus de détails.