ホームページ > PHPフレームワーク > Laravel > laravelファサードとサービスプロバイダーの違い

laravelファサードとサービスプロバイダーの違い

藏色散人
リリース: 2019-08-06 11:16:04
オリジナル
2577 人が閲覧しました

laravelファサードとサービスプロバイダーの違い

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,
ログイン後にコピー
実際には、この名前ファイルはバインドされたばかりのシングルトン パターンの名前ではないことに注意してください。それは正しい。

このようにして、File エイリアスまたはファサードを使用して、この Filesystem インスタンスのメソッドを呼び出すことができます。

この記事を通じて、サービスプロバイダーとFacade、そして実際に呼び出されるクラスのインスタンスの関係を理解し​​ていただければ幸いです。

Laravel 関連の技術記事の詳細については、

Laravel Framework Getting Started Tutorial

列にアクセスして学習してください。

以上がlaravelファサードとサービスプロバイダーの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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