Laravel Facadeの詳細な解釈
以下は、Laravel チュートリアル コラムからの Laravel Facade の詳細な説明です。 . 困っている方のお役に立てれば幸いです!
皆さんこんにちは。今日の内容はLaravelのFacade機構の実装原理についてです。
ファサードの簡単な使用方法
データベースの使用:
$users = DB::connection('foo')->select(...);
IOC コンテナ
ご存知のとおり、IOC コンテナは、 Laravel フレームワーク。 IOC とコンテナという 2 つの機能を提供します。
- IOC (Inversion of Control)、制御の反転とも呼ばれます。端的に言えば、開発者がオブジェクトの生成方法については気にする必要がなく、オブジェクトの使用方法だけを気にする必要がないように、オブジェクトの生成を制御することです。
- IOC メカニズムを通じて生成されたオブジェクト インスタンスには、継続的に使用するための保存場所が必要です。これがコンテナ機能です。
今回は IOC コンテナの具体的な実装については説明しません。後で詳しく説明した記事があります。 IOC コンテナに関して、読者は 2 つの点だけを覚えておく必要があります:
- 設定に従ってオブジェクト インスタンスを生成する;
- いつでも簡単にアクセスできるようにオブジェクト インスタンスを保存する;
簡略化されたファサード クラス
<?php namespace facades; abstract class Facade { protected static $app; /** * Set the application instance. * * @param \Illuminate\Contracts\Foundation\Application $app * @return void */ public static function setFacadeApplication($app) { static::$app = $app; } /** * Get the registered name of the component. * * @return string * * @throws \RuntimeException */ protected static function getFacadeAccessor() { throw new RuntimeException('Facade does not implement getFacadeAccessor method.'); } /** * Get the root object behind the facade. * * @return mixed */ public static function getFacadeRoot() { return static::resolveFacadeInstance(static::getFacadeAccessor()); } /** * Resolve the facade root instance from the container. * * @param string|object $name * @return mixed */ protected static function resolveFacadeInstance($name) { return static::$app->instances[$name]; } public static function __callStatic($method, $args) { $instance = static::getFacadeRoot(); if (! $instance) { throw new RuntimeException('A facade root has not been set.'); } switch (count($args)) { case 0: return $instance->$method(); case 1: return $instance->$method($args[0]); case 2: return $instance->$method($args[0], $args[1]); case 3: return $instance->$method($args[0], $args[1], $args[2]); case 4: return $instance->$method($args[0], $args[1], $args[2], $args[3]); default: return call_user_func_array([$instance, $method], $args); } } }
コードの説明:
- $app は、setFacadeApplication( ) を介して渡される IOC コンテナ インスタンスを格納します。この静的メソッドによって設定されるメソッドは、__callStatic マジック メソッドを実装します。
- getFacadeAccessor() メソッドはサブクラスが継承することを要求し、文字列識別子を返します。この識別子を通じて、IOC コンテナはバインドされているクラスのオブジェクトを返すことができます (フレームワークの初期化またはバインディング (その他の場合)
- $instance を通じて特定のメソッドを呼び出す 独自のファサードを作成する:
TEST1 特定のロジック:
<?php class Test1{ public function hello() { print("hello world"); }}
TEST1 クラスのファサード:
<?php namespace facades;/** * Class Test1 * @package facades * * @method static setOverRecommendInfo [设置播放完毕时的回调函数] * @method static setHandlerPlayer [明确指定下一首时的执行类] */class Test1Facade extends Facade{ protected static function getFacadeAccessor() { return 'test1'; } }
使用法:
use facades\Test1Facade;Test1Facade::hello(); // 这是 Facade 调用
説明:
facades\Test1Facade は静的メソッド hello () を呼び出します。このメソッドは次のとおりです。定義されていない場合、__callStatic が呼び出されます;- __callStatic では、対応するインスタンス、つまり return static::$app->instances[$name ];
- が最初に取得されます。
$name
は、IOC コンテナであるfacades\Test1
の test1$app であり、クラスのインスタンス化プロセスはそれに渡されます。ハンドル。
以上がLaravel Facadeの詳細な解釈の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、コンポーネントを使用してLaravelで再利用可能なUI要素の作成とカスタマイズについて説明し、組織のベストプラクティスを提供し、パッケージを強化することを提案します。

この記事では、Laravelでカスタムブレードディレクティブの作成と使用を行い、テンプレートを強化します。ディレクティブの定義、テンプレートでそれらを使用し、大規模なプロジェクトでそれらを管理することをカバーし、改善されたコードの再利用性やRなどの利点を強調しています

この記事では、Laravelでカスタム検証ルールの作成と使用について説明し、それらを定義および実装する手順を提供します。再利用性や特異性などの利点を強調し、Laravelの検証システムを拡張する方法を提供します。

Laravelの職人コンソールは、コードの生成、移行の実行、スケジューリングなどのタスクを自動化します。重要なコマンドには、Make:Controller、Migrate、およびDB:Seedが含まれます。特定のニーズに合わせてカスタムコマンドを作成し、ワークフロー効率を向上させることができます。

この記事では、Laravelのルーティングを使用してSEOに優しいURLを作成し、Best Practice、Canonical URL、SEO最適化のツールをカバーします。ワード数:159

この記事では、Laravelでデータベーストランザクションを使用して、データの一貫性を維持し、DBファサードと雄弁なモデルを使用した方法の詳細、ベストプラクティス、例外処理、およびトランザクションの監視とデバッグのためのツールについて説明します。

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。

この記事では、ララヴェルでキャッシュを実装して、パフォーマンスを高め、構成をカバーし、キャッシュファサード、キャッシュタグ、原子操作を使用して、パフォーマンスをカバーします。また、キャッシュ構成のベストプラクティスの概要を説明し、キャッシュするデータの種類を提案します
