2

多くのリソース (画像とファイル) を読み取って提供する必要があり、リソースが保存されている実際のパスを非表示にしたいと考えています。symfony 2.x でそれを行う最良の方法は何ですか?

4

1 に答える 1

2

ファイルシステムから抽象化したい場合は、KnpGaufretteBundleを使用できます。Gaufrette は、ファイルシステムを抽象化する PHP ライブラリです。つまり、リソースがどこに保存されていてもアクセスできます (例: ローカル ファイル システム、FTP サーバー、Amazon S3、Dropbox など)。

ただし、Gaufrette はパスを抽象化せず (ファイルシステムの一種のベース ディレクトリを設定します)、このベース ディレクトリからの相対パスを使用します。ローカル ファイルシステムを抽象化する次のコードを検討してください。

<?php

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

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

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

$content = 'Hello I am the new content';

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

この例では、ファイル/var/media/myFile.txtを読み書きします。

ファイルシステムをさらに抽象化する場合は、ファイルとそのエイリアスのマップを持つサービスを作成できます。たとえば、これらのファイル/エイリアスのペアのリストを YAML 構成ファイルから読み取ることができます。次に、エイリアスをパラメータとして何らかの種類のゲッターを使用して、実際のファイル名を取得できます。

于 2012-09-12T11:46:02.917 に答える