Aller au contenu principal
Version: 5.x

💿 Stockage de fichier

Introduction​

Bow Framework intÚgre un systÚme de gestion de fichier permettant de manipuler des fichiers avec une grande simplicité.

Configuration​

Le fichier de configuration du systĂšme de gestion de fichiers se trouve dans config/resource.php.

Fonctionnement​

Vous avez la possibilité d'utiliser les services ou travailler dans votre disque local. Les méthodes statiques mount et service permettent reciproquement de manipuler le systÚme de disque et les services de stockage actuellement ftp et s3.

Systùme de fichier local​

Pour gérer votre systÚme de fichier local avec Bow Framework vous allez utiliser la méthode statique mount.

Explication du concept​

Nous appelerons les différents dossiers spécifiés disk.

Considérons la configuration suivante:

'disk' =>[
'mount' => 'storage',
'path' => [
'storage' => __DIR__.'/../var/app',
'public' => __DIR__.'/../public',
]
];

Vous pouvez spécifier autant de disques que vous voulez.

La classe Storage expose la mĂ©thode statique mount qui permet la manipulation de fichiers. La valeur passĂ©e Ă  mount doit ĂȘtre un nom de disque valide spĂ©cifiĂ© dans la liste des path.

use Bow\Storage\Storage;

Storage::mount("public");
// Ou
Storage::mount();

Si la mĂ©thode mount est appelĂ© sans paramĂȘtre, elle utilisera par dĂ©faut la valeur de la clĂ© mount.

Vous pouvez aussi utiliser le helper mount() qui fonctionne exactement de la mĂȘme maniĂšre:

mount('public');
// Ou
mount()->get('app.js');

Les services S3 et FTP​

Pour utiliser un systÚme de stockage externe. Cela se fait via la méthode service. Cette méthode, vous permet de séléctionner le type de stockage externe que vous voulez utiliser. Vous trouverez la configuration nécessaire des services dans le fichier de configuration section services du fichier config/resource.php.

Exemple avec le service ftp:

$service = Storage::service('ftp');
$service->get('app.js');

Manipulation des fichiers​

Cette section décrit les différentes méthodes disponible pour la manipulation de fichiers et leur utilisation.

Supposons que nous avons le fichier app.txt dans le disque public:

// contenu du fichier app.txt
Hello, world

Notez que ces méthodes (sauf la méthode get) retournent respectivement true ou false en cas de succÚs ou d'échec

RĂ©cupĂ©rer le contenu d'un fichier​

La méthode get sert à recupérer le contenu d'un fichier. Elle prend comme paramÚtre le nom du fichier.

$mount = mount('public');
$content = $mount->get("app.txt");

// Avec un service
$service = Storage::service('ftp');
$content = $service->get("app.txt");

echo $content;
// => Hello, world

service et mount utilise la mĂȘme interface de manipulation. Ce qui veux dire que les mĂ©thodes disponibles pour mount existe aussi pour service.

Ajouter/Modifier le contenu d'un fichier​

La méthode put permet d'ajouter ou de modifier le contenu d'un fichier:

$mount = mount('public');
$content = 'console.log("Hello, world")';

$mount->put('app.js', $content );

Ajouter du contenu au dĂ©but ou Ă  la fin d'un fichier​

Les méthodes preprend et append vous permettent d'ajouter respectivement du contenu au debut ou la fin d'un fichier:

$mount = mount('public');

$mount->prepend('app.txt', 'Contenu ajouté au début');
$mount->append('app.txt', 'Contenu ajouté à la fin');

Supprimer un fichier​

La méthode delete permet de supprimer un fichier.

$mount = mount('public');

$mount->delete('app.js');

Copier un fichier​

$mount = mount('public');

$mount->copy('app.txt', 'sous-dossier/app.txt');

CrĂ©er un dossier​

Vous pouvez créer un nouveau dossier à l'aide de la méthode makeDirectory:

Prototype​

$mount = mount('public');

$mount->makeDirectory($dirname, $mode = 0777, $recursive = false);
ParamĂštreType
pathString - le dossier à créer
modeInt - Le mode du dossier par défaut 777
recursiveBoolean - Permet de créer récursivement
$mount = mount('public');

$mount->makeDirectory('dossier');

Notez que vous pouvez changer le mode du dossier et choisir de le créer de maniÚre récursif.

$mount->makeDirectory('chemin/vers/un/dossier', 777, true);

VĂ©rifier si un fichier existe​

$mount = mount('public');

if ($mount->exists('app.txt')) {
echo $mount->get('app.txt');
}

VĂ©rifier si le paramĂȘtre est un fichier​

$mount = mount('public');

if ($mount->isFile('app.txt')) {
echo "C'est un fichier";
}

VĂ©rifier si le paramĂȘtre est un dossier​

$mount = mount('public');

if ($mount->isDirectory('nom_du_dossier')) {
echo "C'est un dossier";
}

Obtenir le chemin absolu d'un fichier ou dossier​

$mount = mount('public');

$path = $mount->path('app.txt');

echo $path;
// => /chemin/absolu/vers/le/fichier/app.txt

Il manque quelque chose ?

Si vous rencontrez des problÚmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.