ホームページ >バックエンド開発 >PHPチュートリアル >Laravelがどのように機能し、他の場所で使用する方法
ファサードパターンは、単一の統一されたインターフェイスを提供することにより、複雑なオブジェクトの相互作用を簡素化します。 このチュートリアルでは、Laravelのファサードの実装を他のフレームワークに適応させる方法を示しています。
Laravel Facadesは、基礎となる実装のプロキシとして機能するコンテナサービスへの静的なインターフェイスを提供します。 コードの読みやすさを改善し、複雑なライブラリの相互作用を簡素化します
Facade
Laravel's __callStatic
これを他のフレームワークに適応させるには、サービスコンテナの作成、静的インターフェイスのあるファサードクラスの構築、エイリアスローダーの実装が含まれます。
AliasLoader
Laravelは詳細に正面化します:spl_autoload_register
。に単純化します 各サービスには、Laravelのベース
クラスを拡張する対応するファサードがあります。 重要な方法はで、サービスのコンテナ名を返します。
の魔法は、実際のサービス解像度とメソッドの呼び出しを処理します。App::make('some_service')->methodName()
laravelsomeService::methodName()
クラス:
Facade
getFacadeAccessor()
クラスはコンテナの参照(__callStatic
)を保持し、
サービスを取得し、要求されたメソッドを実行します。 このサービス取得にはメソッドが使用されます。 Facade
の単純化されたバージョンを以下に示します:
Facade
ファサードクラス構造:$app
__callStatic
__callStatic
ファサードクラスはベースを拡張し、getFacadeRoot()
:__callStatic
:
<code class="language-php">public static function __callStatic($method, $args) { $instance = static::getFacadeRoot(); return call_user_func_array([$instance, $method], $args); }</code>
ララヴェルのエイリアスシステム:
laravel'sconfig/app.php
には、エイリアス名が完全に適格なクラス名にマッピングされたアレイマッピングマッピングが含まれています。 この配列を繰り返し、'aliases'
を使用してエイリアスを作成するAutoLoad関数を登録します。 これにより、AliasLoader
。
class_alias
FancyName
他のフレームワークでファサードの実装(例:silex):AppFacadesSomeServiceFacade
composer require illuminate/support
。
Facade
getFacadeAccessor()
IlluminateSupportFacadesFacade::setFacadeApplication($app);
createAliasLoader
登録エイリアス:aliases.php
これで、単純化された静的呼び出しでファサードを使用できます。AliasLoader
以上がLaravelがどのように機能し、他の場所で使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。