通過提供單個統一的接口來簡化複雜對象的交互。 本教程演示瞭如何將Laravel的立面實施適應其他框架,利用IOC容器的功能。
密鑰概念:
Laravel的外牆為容器服務提供了類似靜態的接口,充當了基礎實施的代理。 它們提高了代碼的可讀性並簡化複雜的庫交互。
Facade
laravel's $app
管理別名,通過自定義名稱簡化對立面的訪問。 它利用__callStatic
鉤到PHP的自動加載中。 AliasLoader
spl_autoload_register
>直接從容器中訪問服務涉及。 一個外觀將其簡化為>。
>每個服務都有一個相應的立面擴展了Laravel的基礎
類。 關鍵方法是>,它返回服務的容器名稱。 App::make('some_service')->methodName()
的魔力處理實際的服務分辨率和方法調用。 someService::methodName()
>
laravel Facade
class: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'
通過此數組進行迭代,註冊自動加載函數以使用AliasLoader
創建別名。 這允許使用class_alias
>的簡短名稱,而不是FancyName
>。 AppFacadesSomeServiceFacade
>
在其他框架中實現立面(例如,silex):
在Silex(或其他框架)中使用Laravel的外牆方法,請按照以下步驟進行操作:
composer require illuminate/support
>。 Facade
getFacadeAccessor()
IlluminateSupportFacadesFacade::setFacadeApplication($app);
創建AliasLoader
註冊別名:aliases.php
>現在您可以使用簡化的靜態呼叫來使用外牆。 AliasLoader
提供的常見問題解答部分已經全面且結構良好。 不需要更改。 以上是Laravel的外觀如何工作以及如何在其他地方使用它們的詳細內容。更多資訊請關注PHP中文網其他相關文章!