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

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 までご連絡ください。
タスク管理ツール:リモートプロジェクトの進捗状況の優先順位付けと追跡タスク管理ツール:リモートプロジェクトの進捗状況の優先順位付けと追跡May 02, 2025 am 12:25 AM

Taskmanagementtoolsareessentialforeffectiveremoteprojectmanagementbyprioritizingtasksandtrackingprogress.1)UsetoolslikeTrelloandAsanatosetprioritieswithlabelsortags.2)EmploytoolslikeJiraandMonday.comforvisualtrackingwithGanttchartsandprogressbars.3)K

最新のLaravelバージョンはパフォーマンスをどのように改善しますか?最新のLaravelバージョンはパフォーマンスをどのように改善しますか?May 02, 2025 am 12:24 AM

laravel10EnhancesperformAnceTheveralkeyfeatures.1)ItintroduceSquerybuilderCachinucedatedatabaseload.2)itoptimizeseLoquentModelloadingwithlazingproxies.3)itimprovesRoutingWithineSystem.4)itemproveStingwithingingSystem.4)

フルスタックのLaravelアプリケーションの展開戦略フルスタックのLaravelアプリケーションの展開戦略May 02, 2025 am 12:22 AM

最高のフルスタックのLaravelアプリケーション展開戦略には、1。Zeroダウンタイム展開、2。ブルーグリーン展開、3。連続展開、4。Canaryリリースが含まれます。 1.ゼロダウンタイムデプロイメントは、EnvoyまたはDeployerを使用して展開プロセスを自動化して、更新時にアプリケーションを利用できるようにします。 2。ブルーとグリーンの展開により、2つの環境を維持し、迅速なロールバックを可能にすることにより、ダウンタイムの展開が可能になります。 3.継続的な展開GithubactionsまたはGitlabci/CDを使用して、展開プロセス全体を自動化します。 4。nginx構成を通じてカナリーがリリースされ、パフォーマンスの最適化と迅速なロールバックを確保するために、新しいバージョンをユーザーに徐々に宣伝します。

フルスタックのLaravelアプリケーションのスケーリング:ベストプラクティスとテクニックフルスタックのLaravelアプリケーションのスケーリング:ベストプラクティスとテクニックMay 02, 2025 am 12:22 AM

ToscalealAravelApplicationively、Focusondatabasesharding、Caching、Loadbalancing、andMicroservices.1)databaseShardingTodistributedataacrossMultipledatabase.2)uselaraval'scachingsmultedistestemedisemememememememedtededatedatab

静かな闘争:分散型チームのコミュニケーションの障壁を克服します静かな闘争:分散型チームのコミュニケーションの障壁を克服しますMay 02, 2025 am 12:20 AM

ToovercomcomcommunicationbarriersindistributedTeams、使用:1)VideoCallsForface-to-faceInteraction、2)setClearResponsetimeExpectations、3)ChooseaprateCommunicationSoools、4)CreateAmCommunicationGuide、and5)

フルスタックプロジェクトでのフロントエンドテンプレートにLaravel Bladeを使用しますフルスタックプロジェクトでのフロントエンドテンプレートにLaravel Bladeを使用しますMay 01, 2025 am 12:24 AM

laravelbladeEnhancesFrontendTemplatinginfull stackprojectsbyofferingcleansyntaxandpowerfulfeatures.1)itallows foreasyvariabledisplayandcontrolstructures.2)bladeSupportscreating andReusing components、

Laravelを使用したフルスタックアプリケーションの構築:実用的なチュートリアルLaravelを使用したフルスタックアプリケーションの構築:実用的なチュートリアルMay 01, 2025 am 12:23 AM

laravelisidealforfull-stackapplicationsduetoitseLegantyntax、包括的なセコスシステム、およびパワーフルフィーチュア

リモートロールが接続を維持するためにどのようなツールを使用しましたか?リモートロールが接続を維持するためにどのようなツールを使用しましたか?May 01, 2025 am 12:21 AM

forRemotework、iusezoomforvideocalls、slackformessaging、trelloforprojectmanagement、andgithubforcodecollaboration.1)zoomisReliaible forlargemeetingsbuthefreeversion.2)slackintegrateswellwithtoolSotoolsotification -ortificationoverload.3)trel

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン