laravel ファサード モードとサービス プロバイダーの違い
Laravel 独自のファイル システムを例として構成で取り上げます。 /app.php の構成ファイルのプロバイダー配列に、サービス プロバイダーが登録されます:
Illuminate\Filesystem\FilesystemServiceProvider::class,
ファサードはエイリアス配列で定義されます:
‘File’ => Illuminate\Support\Facades\File::class,
これらの 2 つの手順を通じて、 Laravel が提供するファイル システム関連の操作を使用すると非常に便利で、呼び出し形式は次のように非常にシンプルです。 Laravelのサービスプロバイダーとファサードモードについてそれぞれ話しましょう。
サービスプロバイダー最初に定義を見てみましょう:
サービスプロバイダーは、すべての Laravel アプリケーションが開始される中心です。独自のアプリケーションを含むすべてのコア Laravel サービスは、サービスプロバイダーを通じて開始されます。
ファイル システム サービス プロバイダー (
/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.phpにあります) では、 register メソッドでシングルトンがバインドされていることを確認できます。 ##
File::exist ($path),判断文件是否存在。 File::get ($path, $lock = false),获取一个文件的内容。 File::append ($path, $data),把内容追加到一个文件末尾。 File::files ($directory),获取一个目录下所有文件。
このシングルトンは、Filesystem クラスのシングルトン モードです。もちろん、このサービス プロバイダーは他のシングルトンをバインドしたり、さらに多くのことを実行したりすることもできます。ここでは、 File::exist () 呼び出しメソッドの原理のみを学習します。
つまり、ファイルのインスタンスは 1 つですが、これは実際には Filesystem クラスのインスタンスです。 現時点で、Facade がない場合は、ファイルシステム インスタンスのメソッドを呼び出すこともできます。つまり、次のように呼び出します。 protected function registerNativeFilesystem() { $this->app->singleton('files', function () { return new Filesystem; }); }
Facade ファサード パターン
最初に概要を見てみましょう:
Facades /fəˈsäd/ は、利用可能なクラスの「静的」インターフェイスを提供しますアプリケーションのサービスコンテナ内。 Laravel には、ほぼすべてのサービスにアクセスするために使用できる多くのファサードが付属しています。 Laravel ファサードは、サービス コンテナ内の基本クラスの「静的プロキシ」です。従来の静的メソッド呼び出しと比較して、ファサードはよりシンプルで豊富な構文を提供すると同時に、より優れたテスト容易性とスケーラビリティを備えています。 この記事の冒頭で、エイリアス配列がファイルを定義すると述べました。特定のクラスはapp(‘files’)->exist($path)
Illuminate\Support\Facades\File::class,
Laravel Framework Getting Started Tutorial
列にアクセスして学習してください。以上がlaravelファサードとサービスプロバイダーの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。