ホームページ > バックエンド開発 > PHPチュートリアル > フライシステムを備えた抽象ファイルシステム

フライシステムを備えた抽象ファイルシステム

William Shakespeare
リリース: 2025-02-21 10:22:10
オリジナル
854 人が閲覧しました

Abstract File Systems with Flysystem

コアポイント

  • Flysystemは、複数のファイルシステムに抽象化レイヤーを提供し、開発者が基礎となるストレージシステムの詳細を心配することなく、読み取り、書き込み、ディレクトリ組織などの高度な操作に集中できるようにします。
  • フライシステムは、異なるストレージシステム間を切り替えるプロセスを簡素化し、多くのアプリケーションコードを書き換えることなく、あるシステムから別のシステムへのデータの移動またはコピーを簡単にします。
  • フライシステムは、ローカルディレクトリ、Dropbox、Amazon S3、クラウドファイル、FTP、SFTPなど、さまざまなストレージシステムをサポートし、それらをすべてローカルシステムとして扱い、使用するストレージシステムとは無関係にファイルを保存するプロセスを作成します。
  • Flysystemは、ファイルの可視性の管理、ファイルとディレクトリのリスト、ディレクトリの自動化、およびファイルメタデータのキャッシュの機能も提供し、さまざまなストレージシステム全体でファイル管理をさらに簡素化します。

プログラミング言語でファイルを読み書きすることは不可欠な側面ですが、基礎となる実装は大きく異なる場合があります。たとえば、ローカルファイルシステムへのデータの書き込みの詳細は、FTPを介したアップロードと比較して大きく異なりますが、概念的には非常に似ています。

FTPなどの確立されたテクノロジーとは別に、オンラインストレージはより一般的で安価になりつつあります。Dropbox、AmazonのS3、Rackspaceのクラウドファイルなど、多くのサービスがありますが、すべてがわずかに異なる読み取りを使用し、Enterメソッドを使用しています。

これがフライシステムが登場する場所です。複数のファイルシステムに抽象化レイヤーを提供します。つまり、ファイルがどこにあるか、どのように保存されるか、または低レベルのI/O操作について心配する必要はありません。読み取り、書き込み、ディレクトリ組織などの高度な運​​用に焦点を当てる必要があります。

この抽象化は、多くのアプリケーションコードを書き換えることなく、あるシステムから別のシステムに切り替えるプロセスを簡素化することもできます。また、基礎となる実装を心配することなく、あるストレージシステムから別のストレージシステムにデータを移動またはコピーする方法も提供します。

ドロップボックス、S3、クラウドファイル、FTP、またはSFTPは、ローカルシステムと同じように同じプロセスになります。圧縮ファイル自体を作成してジッピングすることの詳細を心配することなく、Zip Compressedファイルを多数のフォルダーと考えることができます。

インストールと基本的な使用法

いつものように、作曲家はインストールするのに最適な方法です:

"league/flysystem": "0.2.*"
ログイン後にコピー
ログイン後にコピー
適切なアダプターを渡すことにより、LeagueFlySystemFilesySystemの1つ以上のインスタンスを作成できるようになりました。

たとえば、

ローカルディレクトリを使用するには:

use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local as Adapter;

$filesystem = new Filesystem(new Adapter('/path/to/directory'));
ログイン後にコピー
ログイン後にコピー
Amazon S3バケットを使用するには、もう少し構成が必要です。

Dropboxを使用するには

use Aws\S3\S3Client;
use League\Flysystem\Adapter\AwsS3 as Adapter;

$client = S3Client::factory(array(
    'key'    => '[您的密钥]',
    'secret' => '[您的密钥]',
));

$filesystem = new Filesystem(new Adapter($client, 'bucket-name', '可选前缀'));
ログイン後にコピー
ログイン後にコピー

(トークンとアプリケーション名を取得するには、Dropboxのアプリコンソールを使用してアプリケーションを作成します。)
use Dropbox\Client;
use League\Flysystem\Adapter\Dropbox as Adapter;

$client = new Client($token, $appName);
$filesystem = new Filesystem(new Adapter($client, '可选/路径/前缀'));
ログイン後にコピー
"league/flysystem": "0.2.*"
ログイン後にコピー
ログイン後にコピー

通常のFTP、Predis、WebDavなどの他のアダプターについては、ドキュメントを参照してください。

ファイルシステムに読み取りと書き込み

アプリケーションコードの観点から、file_exists()fopen()/fclose()fread/fwriteなどの呼び出しをフライシシシステムの等価物に置き換えるだけです。 mkdir() たとえば、

以下は、ローカルファイルをS3バケツにコピーする古いコードです。

フライシステムを使用すると、次のように見えるかもしれません:
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local as Adapter;

$filesystem = new Filesystem(new Adapter('/path/to/directory'));
ログイン後にコピー
ログイン後にコピー

「読み取り」と「書き込み」、「ローカル」、「リモート」などの用語を使用していることに注意してください。ファイルハンドルの作成と破壊を心配することなく、高度な抽象化を使用しています。
use Aws\S3\S3Client;
use League\Flysystem\Adapter\AwsS3 as Adapter;

$client = S3Client::factory(array(
    'key'    => '[您的密钥]',
    'secret' => '[您的密钥]',
));

$filesystem = new Filesystem(new Adapter($client, 'bucket-name', '可选前缀'));
ログイン後にコピー
ログイン後にコピー

以下は、LeagueFlySystemFilesystemクラスで最も重要な方法の要約です。

(同じパターンに応じて残りのコンテンツを書き換えてください。長さは長すぎて省略しています。)
方法 示例
读取 $filesystem->read('filename.txt')
写入 $filesystem->write('filename.txt', $contents)
更新 $filesystem->update('filename.txt')
写入或更新 $filesystem->put('filename.txt')
检查是否存在 $filesystem->has('filename.txt')
删除 $filesystem->delete('filename.txt')
重命名 $filesystem->rename('old.txt', 'new.txt')
读取文件 $filesystem->read('filename.txt')
获取文件信息 $filesystem->getMimetype('filename.txt')
$filesystem->getSize('filename.txt')
$filesystem->getTimestamp('filename.txt')
创建目录 $filesystem->createDir('path/to/directory')
删除目录 $filesystem->deleteDir('path/to/directory')
コアのアイデアは、キーワードを置き換え、文の構造を調整し、元の意味を変更せずに保つことです。 。 たとえば、「PHPエディターWatermelon」をより一般的なステートメントに置き換え、手順の数値の説明をより自然言語の説明などに変更します。 画像形式は同じままです。

以上がフライシステムを備えた抽象ファイルシステムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート