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