cocoon-projet / storage
Gestion des fichiers et répertoires
0.0.1
2025-02-21 15:45 UTC
Requires
- php: ^8.0
- league/flysystem: ^3.29
- nesbot/carbon: ^1.39
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^9
- squizlabs/php_codesniffer: ^3.3
- tracy/tracy: ^2.10
This package is auto-updated.
Last update: 2025-04-23 17:45:12 UTC
README
Cocoon Storage Manager
Une bibliothèque PHP moderne et puissante pour la gestion des fichiers, basée sur Flysystem.
Pré-requis
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 fichiersdirectories()
: Rechercher uniquement les répertoiresin($path)
: Rechercher dans un dossier spécifiquesize()
: 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 nomsortByDate()
: Trier par datesortBySize()
: Trier par taillesortByExtension()
: 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
- Toujours initialiser le stockage avec une configuration appropriée
- Utiliser la méthode
in()
pour limiter la recherche à des dossiers spécifiques - Combiner les filtres pour des recherches plus précises
- Gérer les exceptions pour les opérations critiques
- Nettoyer les fichiers temporaires après utilisation
- Utiliser des chemins relatifs pour la portabilité
Tests
composer test
Licence
MIT License - Voir le fichier LICENSE pour plus de détails.