Laravel立面:服務的方便訪問點
Laravel的外牆提供了一種簡化與服務交互的方法,從而通過用戶友好的界面簡化了訪問。 最初,立面登錄方法似乎令人困惑,但是了解其作用闡明了其效用。 立面是Laravel服務容器中基礎服務的方便代理。 由於
>方法,找到鏈接到任何給定立面的服務非常簡單。此方法返回註冊的服務名稱。
getFacadeAccessor()
例如,
外觀的登錄器看起來像這樣:DB
>
// Illuminate\Support\Facades\DB; protected static function getFacadeAccessor() { return 'db'; }字符串
識別外牆使用的容器中的服務。 可以使用Tinker進行驗證:'db'
public function __call($method, $parameters) { if (static::hasMacro($method)) { return $this->macroCall($method, $parameters); } return $this->connection()->$method(...$parameters); }沒有指定的連接,
默認為已配置的連接(例如,在上面的示例中)。 DatabaseManager
sqlite
Laravel文檔提供了有關立面功能的全面詳細信息和可用外牆的完整列表。
創建自定義外牆
>對應用程序開發並不是嚴格必要的,但是創建自定義立面可以提高生產力,尤其是對於經常使用的服務。 當與助手或專用
>名稱空間內合作時,這尤其有益。 這種方法可以平衡拉拉維爾的靈活性和既定的慣例。要生成立面,請使用工匠命令:AppFacades
或者,如果未定義別名或服務提供商中未使用字符串,則可以直接使用完全合格的類名稱:
php artisan make:class App/Facades/Example:
AppExampleService
幕牆的一個重要優勢是在測試過程中易於嘲笑基礎服務:
namespace App\Facades; use Illuminate\Support\Facades\Facade; class Example extends Facade { protected static function getFacadeAccessor() { return 'example_service'; } }Laravel沒有外牆,提供類似模擬功能之類的方法:
protected static function getFacadeAccessor() { return \App\ExampleService::class; }>最終,使用外牆和其他方法之間的選擇取決於個人偏好和項目需求。 但是,對於經常訪問的服務,立面可以顯著提高代碼的可讀性和可維護性,而無需犧牲依賴注入的好處。
以上是了解如何在Laravel創建自定義立面的詳細內容。更多資訊請關注PHP中文網其他相關文章!