29
28

More than 5 years have passed since last update.

Gaufrette - PHPで便利なファイルシステム抽象レイヤー

Last updated at Posted at 2014-03-03

PHPでファイルアップロード・・・めんどくさいですね。

ましてやAmazonS3にアップロード、パフォーマンスまたはコストの為にローカルキャッシュを持たせる..

ローカルに保存していたファイルをクラウドに移行、または別のクラウドサービスに移行..

すごくめんどくさい

そんな時の抽象レイヤー

Gaufrette - https://github.com/KnpLabs/Gaufrette

ローカルファイルシステム

<?php

use Gaufrette\Filesystem;
use Gaufrette\Adapter\Local as LocalAdapter;

$adapter = new LocalAdapter('/var/media');
$filesystem = new Filesystem($adapter);

$content = $filesystem->read('hoge.txt');

$content = 'Hello gaufrette';

$filesystem->write('hoge.txt', $content);

アダプターを変えるだけで、色々なファイルシステムにアクセスできます

Amazon S3

$service = S3Client::factory(['key' => 'key_here', 'secret' => 'secret_here']);
$adapter  = new Gaufrette\Adapter\AwsS3($service,'bucket-name');

移行も簡単にできてしまうのが容易に想像できますね!

キャッシング

$ttl = 3600;
$adapter = new Gaufrette\Adapter\Cache($slowAdapter, $localAdapter, $ttl);
$filesystem = new Gaufrette\Filesystem($adapter);

他にもアダプタはたくさん

  • Rackspace
  • OpenStack
  • Dropbox
  • DoctrineDbal
  • Ftp
  • etc

SymfonyにはKnpGaufretteBundleもあります

アダプタをサービスにする手間が省ける他に、LiipImagineBundle(サムネイルを生成するバンドル)上でGaufretteを使う事も容易になります。

  1. KnpGaufretteBundleStreamWrapper を定義
  2. LiipImagineBundle1のStreamWrapper をデータソースとする StreamDataLoader を定義

何も困る事はありませんね!

詳しくはドキュメントにあります。
https://github.com/liip/LiipImagineBundle/blob/master/Resources/doc/data-loader/stream.rst

ローカルファイルシステムにしか使わないとしても便利なのでおすすめです。

29
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
28