-
Notifications
You must be signed in to change notification settings - Fork 0
FileTool
La classe FileTool offre une interface unifiée pour manipuler le système de fichiers. Elle permet de gérer des opérations complexes comme la suppression récursive, la modification de droits en masse (chmod/chown) ou la compression de données, tout en assurant une journalisation des erreurs via le Logger.
Namespace : Magepattern\Component\File\FileTool
| Méthode | Paramètres | Retour | Description |
|---|---|---|---|
| mkdir() | $dirs, $mode | bool | Crée des répertoires récursivement. |
| remove() | $files | bool | Supprime fichiers ou dossiers (récursif). |
| copy() | $src, $dst, $ovr | bool | Copie intelligente (vérifie la date de modification). |
| chmod() | $files, $mode... | bool | Change les permissions (supporte le mode récursif). |
| makeGZFile() | $target, $src | bool | Compresse un fichier au format GZ (Zlib). |
| writeConstValue() | $name, $val, &$c | void | Modifie une valeur de configuration dans un fichier. |
| getCache() | $file | mixed | Système de cache simple (sérialisation + TTL 2 min). |
Usage Avancé
- Gestion Récursive Simplifiée Contrairement aux fonctions natives, FileTool traite les dossiers et leur contenu automatiquement.
use Magepattern\Component\File\FileTool;
// Supprime un dossier et tout ce qu'il contient (fichiers et sous-dossiers)
FileTool::remove('/path/to/old/logs');
// Applique un chmod 0755 à tout un projet
FileTool::chmod('/var/www/html', 0755, 0000, true);- Copie Intelligente La méthode copy() est optimisée pour ne pas copier inutilement si le fichier destination est déjà à jour (basé sur filemtime).
// Copie seulement si source est plus récent que cible ou si cible absente
FileTool::copy('source.txt', 'backup.txt');
// Force l'écrasement
FileTool::copy('source.txt', 'backup.txt', true);- Manipulation de fichiers de configuration La méthode writeConstValue permet de modifier dynamiquement des fichiers de config PHP sans avoir à parser tout le fichier. Elle supporte les syntaxes define() et les tableaux associatifs.
$config = file_get_contents('config.php');
FileTool::writeConstValue('DB_NAME', 'new_database', $config);
file_put_contents('config.php', $config);Compression GZ Idéal pour archiver des logs ou préparer des exports XML/JSON volumineux.
FileTool::makeGZFile('backup.xml.gz', 'backup.xml', 9);Système de Cache Éphémère getCache permet de stocker des objets ou tableaux sérialisés avec une expiration automatique de 120 secondes.
$data = FileTool::getCache('cache/search_results.tmp');
if ($data === false || $data === null) {
// Calculer les données et sauvegarder
$results = ['...'];
file_put_contents('cache/search_results.tmp', serialize($results));
}Suivi des erreurs : Chaque échec d'écriture ou de permission est capturé par un try...catch et envoyé au Logger interne.
Vérification d'existence : mkdir et remove vérifient systématiquement l'état du système avant d'agir pour éviter les "Warnings" PHP inutiles.
Atomicité : La classe utilise @ sur les fonctions sensibles pour éviter de polluer la sortie utilisateur tout en gérant l'erreur proprement via des exceptions.