ホームページ >PHPフレームワーク >Laravel >Laravelフレームワークでのサービスプロバイダーとファサードパターン(Facade)の使用法(コード)

Laravelフレームワークでのサービスプロバイダーとファサードパターン(Facade)の使用法(コード)

不言
不言オリジナル
2018-07-31 18:00:372667ブラウズ

laravelフレームワークの組み込みファイルシステムの関連操作を使用すると非常に便利ですが、これはどのように実装されているのでしょうか?次の記事では、php 中国語の Web サイトで関連する原則について詳しく説明します。早速、記事の内容を見てみましょう。

紹介から始めましょう:

Laravel 独自のファイルシステムを例として、構成ファイル config/app.php のプロバイダー配列に、サービスプロバイダーが登録されています:

IlluminateFilesystemFilesystemServiceProvider::class,

エイリアス配列 Aファサードは次のように定義されます:

‘File’ => IlluminateSupportFacadesFile::class,

これらの 2 つのステップを通じて、Laravel が提供するファイルシステム関連の操作を非常に便利に使用できます。また、呼び出し形式は次​​のように非常に単純です:

File::exist($path)、判定ファイルが存在するかどうか。

File::get($path, $lock = false)、ファイルの内容を取得します。

File::append($path, $data)、ファイルの末尾にコンテンツを追加します。

File::files($directory)、ディレクトリ内のすべてのファイルを取得します。

Laravel のサービスプロバイダーとファサードモードについてそれぞれ話しましょう。

サービスプロバイダー

最初に定義を見てみましょう:

サービスプロバイダーは、すべてのLaravelアプリケーションが開始される中心です。独自のアプリケーションを含むすべてのコア Laravel サービスは、サービスプロバイダーを通じて起動されます。

/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php にあるファイル システム サービス プロバイダーでは、 register メソッドでシングルトンがバインドされていることを確認できます。

protected function registerNativeFilesystem()
{
    $this->app->singleton('files', function () {
        return new Filesystem;
    });
}

このシングルトンは、次のファイルシステム パターンです。クラス。もちろん、このサービス プロバイダーは他のシングルトンをバインドしたり、さらに多くのことを実行したりすることもできます。ここでは、File::exist() 呼び出しメソッドの原理のみを学習します。

次に、ファイルのインスタンスが 1 つあります。これは、実際には Filesystem クラスのインスタンスです。

この時点で、ファサードがない場合は、次のようにファイルシステム インスタンスのメソッドを呼び出すこともできます:

app(‘files’)->exist($path)

さて、ファサードについて話しましょう。

ファサード ファサード モード

ファサードはアプリケーションのサービス コンテナで使用できるクラスは、「静的」インターフェイスを提供します。 Laravelにはたくさんのものが付属しています ファサードは、ほぼすべてのサービスにアクセスするために使用できます。 Laravelのファサード これらは、サービス コンテナ内の基本クラスの「静的プロキシ」です。従来の静的メソッド呼び出しと比較して、ファサードはよりシンプルで豊富な構文を提供するだけでなく、テスト容易性と拡張性も優れています。

この記事の冒頭で、エイリアス配列がファイルを定義すると述べました。特定のクラスは

IlluminateSupportFacadesFile::class であり、

その内容は次のとおりです:

class File extends Facade
{
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor()
    {
        return 'files';
    }
}

実際には名前に注意してください。ファイル、シングルトンパターンの名前がバインドされているだけですよね?それは正しい。

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

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

上記がこの記事の全内容です。laravel の詳細については、laravel フレームワーク入門チュートリアルを参照してください。

おすすめ関連記事:

Laravelフレームワークの補助関数: オプションの()関数の紹介

Laravel5.5の新機能: プリセットコマンドの解析

おすすめ関連コース:

2017年最新 5つのおすすめLaravelビデオチュートリアル

以上がLaravelフレームワークでのサービスプロバイダーとファサードパターン(Facade)の使用法(コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。