ホームページ  >  記事  >  バックエンド開発  >  [ Laravel 5.2 ドキュメント ] アーキテクチャ -- ファサード

[ Laravel 5.2 ドキュメント ] アーキテクチャ -- ファサード

WBOY
WBOYオリジナル
2016-06-20 12:40:56928ブラウズ

1. はじめに

ファサードは、アプリケーションのサービス コンテナーのバインディング クラスに「静的」インターフェイスを提供します。 Laravel には、知らず知らずのうちに使用している可能性のある多くの組み込みファサードがあります。 Laravel のファサードは、サービス コンテナ内の基礎となるクラスの「静的プロキシ」として機能し、従来の静的メソッドと比較して、メンテナンス中にテストが容易で、より柔軟で簡潔で表現力豊かな構文を提供できます。

2. ファサードの使用

Laravel アプリケーションのコンテキストでは、ファサードはコンテナ内のオブジェクトへのアクセスを提供するクラスです。このメカニズムの原理は、Laravel 独自のファサードと作成されたカスタム ファサードによって実装され、IlluminateSupportFacadesFacade 基本クラスから継承されます。

ファサード クラスは 1 つのメソッド getFacadeAccessor を実装するだけで済みます。コンテナから何を解決するかを定義するのは getFacadeAccessor メソッドであり、その後、Facade 基本クラスがマジック メソッド __callStatic() を使用して、ファサードから解決されたオブジェクトを呼び出します。

次の例では、Laravel のキャッシュ システムを呼び出します。コードを参照すると、Cache の静的メソッド get を呼び出したと思われるかもしれません。

<?phpnamespace App\Http\Controllers;use Cache;use App\Http\Controllers\Controller;class UserController extends Controller{    /**     * 为指定用户显示属性     *     * @param  int  $id     * @return Response     */    public function showProfile($id)    {        $user = Cache::get('user:'.$id);        return view('profile', ['user' => $user]);    }}

注意してください。上部にはキャッシュ ファサードが紹介されています。このファサードは、基礎となる IlluminateContractsCacheFactory インターフェイスの実装にアクセスするためのプロキシとして機能します。ファサードに対して行うすべての呼び出しは、Laravel キャッシュ サービスの基礎となるインスタンスに渡されます。

IlluminateSupportFacadesCache クラスのソース コードを見ると、静的メソッド get がないことがわかります。

class Cache extends Facade{    /**     * 获取组件注册名称     *     * @return string     */    protected static function getFacadeAccessor() {         return 'cache';     }}

キャッシュ ファサードは Facade 基本クラスを継承し、getFacadeAccessor を定義します。このメソッドの役割は、サービス コンテナ バインディング クラスのエイリアスを返すことです。ユーザーが Cache クラスの静的メソッドを参照すると、Laravel はサービス コンテナからキャッシュ バインディングを解決し、要求されたすべてのメソッド (この場合は get) を呼び出します。 ) 解決されたオブジェクトに対して。

3. ファサード クラス リスト

以下に、各ファサードとそれに対応する基礎となるクラスをリストします。これは、特定のルートの API ドキュメントを詳しく調べるのに適した方法です。ファサード。非常に便利なツール。サービス コンテナーのバインディング キーも含まれます:

门面 服务容器绑定别名
App IlluminateFoundationApplication app
Artisan IlluminateConsoleApplication artisan
Auth IlluminateAuthAuthManager auth
Auth (Instance) IlluminateAuthGuard
Blade IlluminateViewCompilersBladeCompiler blade.compiler
Bus IlluminateContractsBusDispatcher
Cache IlluminateCacheRepository cache
Config IlluminateConfigRepository config
Cookie IlluminateCookieCookieJar cookie
Crypt IlluminateEncryptionEncrypter encrypter
DB IlluminateDatabaseDatabaseManager db
DB (Instance) IlluminateDatabaseConnection
Event IlluminateEventsDispatcher events
File IlluminateFilesystemFilesystem files
Hash IlluminateContractsHashingHasher hash
Input IlluminateHttpRequest request
Lang IlluminateTranslationTranslator translator
Log IlluminateLogWriter log
Mail IlluminateMailMailer mailer
Password IlluminateAuthPasswordsPasswordBroker auth.password
Queue IlluminateQueueQueueManager queue
Queue (Instance) IlluminateQueueQueueInterface
Queue (Base Class) IlluminateQueueQueue
Redirect IlluminateRoutingRedirector redirect
Redis IlluminateRedisDatabase redis
Request IlluminateHttpRequest request
Response IlluminateContractsRoutingResponseFactory
Route IlluminateRoutingRouter router
Schema IlluminateDatabaseSchemaBlueprint
Session IlluminateSessionSessionManager session
Session (Instance) IlluminateSessionStore
Storage IlluminateContractsFilesystemFactory filesystem
URL IlluminateRoutingUrlGenerator url
Validator IlluminateValidationFactory validator
Validator (Instance) IlluminateValidationValidator
View IlluminateViewFactory view
View (Instance) IlluminateViewView
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。