您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關laravel門面指的是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在laravel中,門面是為應用服務容器中的綁定類提供的一個“靜態”接口。維護時能夠提供更加易于測試、更加靈活、簡明優雅的語法,所有的門面都定義在“Illuminate\Support\Facades”命名空間下。
本文操作環境:Windows10系統、Laravel6版、Dell G3電腦。
Facades 為應用服務容器中的綁定類提供了一個“靜態”接口。
Laravel 內置了很多 Facades ,可以訪問絕大部分 Laravel 的功能。
Laravel 的門面作為服務容器中底層類的“靜態代理”,相比于傳統靜態方法,在維護時能夠提供更加易于測試、更加靈活、簡明優雅的語法。
Laravel 的所有門面都定義在 Illuminate\Support\Facades 命名空間下。
我們可以輕松訪問到門面:
use Illuminate\Support\Facades\Cache; Route::get('/cache', function () { return Cache::get('key'); });
在整個 Laravel 文檔中,很多例子使用了門面來演示框架的各種功能特性。
何時使用 Facades
門面有諸多優點,其提供了簡單、易記的語法,讓我們無需記住長長的類名即可使用 Laravel 提供的功能特性,此外,由于他們對 PHP 動態方法的獨到用法,使得它們很容易測試。
在使用 Facades 時,有些地方還需要特別注意。
使用 Facades 最主要的風險就是會引起類作用范圍的膨脹。
因為 Facades 使用起來非常簡單而且不需要注入,就會使得我們在不經意間在單個類中使用許多 Facades,從而導致類變的越來越大。
而使用依賴注入的時候,使用的類越多,構造方法就會越長,在視覺上就會引起注意,提醒你這個類有點龐大了。因此在使用 Facades 的時候,要特別注意控制好類的大小,讓類的作用范圍保持短小。
在開發與 Laravel 進行交互的第三方擴展包時,建議最好選擇注入 Laravel 契約 ,而不是使用 Facades 的方式來使用類。因為擴展包是在 Laravel 本身之外構建,所以你無法使用 Laravel Facades 測試輔助函數。
Facades Vs. 依賴注入
依賴注入的主要優點之一是切換注入類的實現的能力。這在測試的時候很有用,因為你可以注入一個 mock 或者 stub ,并斷言在 stub 上調用的各種方法。
通常,真正的靜態方法是不可能被 mock 或者 stub。但是,因為 Facades 使用動態方法來代理從服務容器解析的對象的方法調用,我們可以像測試注入的類實例一樣來測試 Facades。例如,像下面的路由:
use Illuminate\Support\Facades\Cache; Route::get('/cache', function () { return Cache::get('key'); })
我們可以這樣編寫測試來驗證 Cache::get 方法以我們期望的方式被調用:
use Illuminate\Support\Facades\Cache; /** * 一個基礎功能的測試用例。 * * @return void */ public function testBasicExample() { Cache::shouldReceive('get') ->with('key') ->andReturn('value'); $this->visit('/cache') ->see('value'); }
關于“laravel門面指的是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。