laravel門面有什麼用
在laravel中,門面Facades用於為應用的IoC服務容器的類別提供了一個靜態的接口,Laravel的門面作為服務容器中底層類別的靜態代理,相比於傳統靜態方法,在維護時能夠提供更易於測試的語法。
本教學操作環境:windows10系統、Laravel6版,DELL G3電腦。
laravel門面有什麼用
介紹
#Facades 為應用的 IoC 服務容器 的類別提供了一個靜態的介面。 Laravel 裡面自備了一些 Facades,如Cache等。 Laravel 的門面作為服務容器中底層類別的“靜態代理”,相比於傳統靜態方法,在維護時能夠提供更易於測試、更加靈活、簡明優雅的語法。
解釋
在Laravel 應用這個上下文裡面,一個Facade 就是一個類,使用這個類可以存取到來自容器裡的一個對象,這個功能就是在Facade類別裡面定義的。 Laravel 的 Facades 還有任何你自己定義的 Facades,都會去繼承 Facade 這個類別。
你的 Facade 類別只需要實作一個的方法:getFacadeAccessor。要在容器裡 resolve 什麼出來,都是在這個方法裡去做的。 Facade 這個基底類別裡面使用了__callStatic() 魔術方法,可以延遲到 resolved 物件上的,來自 Facade 的呼叫。
所以,當你使用 Facade 呼叫的時候,例如像這樣:Cache:get,laravel 會從 Ioc 服務容器 裡面 resolves 快取管理類,然後再去呼叫這個類別上面的 get 方法。 Laravel 的 Facades 可以去定位服務,它是一種使用 Laravel 的 Ioc 服務容器 的更方便的語法。
優點
Facade 有許多優點,其提供了簡單、易記的語法,讓我們無需記住長長的類別名稱即可使用Laravel 提供的功能特性,此外,由於他們對PHP 動態方法的獨到用法,使得它們很容易測試。
實際上使用
下面的例子,去呼叫了一下 Laravel 的快取系統。先看一下下面這行程式碼,你可能會覺得,這是直接去呼叫 Cache 這個類別上面的一個叫 get 的靜態的方法。
$value = Cache::get('key');
不過,如果你查看Illuminate\Support\Facades\Cache 這個類,你會發現這裡根本就沒有get 這個靜態方法:
class Cache extends Facade { /** * Get the registered name of the component. * * @return string */ protected static function getFacadeAccessor() { return 'cache'; } }
Cache 這個類別繼承了Facade 這個基類,它裡面定義了一個叫做getFacadeAccessor() 的方法。注意,這個方法的乾的事就是去回傳一個 Ioc 綁定的名字,這裡就是 cache。
當使用者在引用任何在Cache 這個Facade 上的靜態方法的時候,Laravel 就會從Ioc 服務容器裡面去resolves cache 這個綁定,並且會去執行在物件上的這個所請求的方法(這裡就是get 這個方法)。
所以,我們在呼叫Cache::get 的時候,它的真正的意思是這樣的:
$value = $app->make('cache')->get('key');
導入Facades
##注意,在使用facade 的時候,如果控制器裡面用到了命名空間,你需要把Facade 類別匯入到這個命名空間裡。所有的Facades 都是在全域命名空間下:<?php namespace App\Http\Controllers; use Cache; class PhotosController extends Controller { /** * Get all of the application photos. * * @return Response */ public function index() { $photos = Cache::get('photos'); // } }
建立Facades
建立Facade 只需要三個東西:- #一個IoC 綁定。
- 一個 Facade 類別。
- 一個 Facade 別名的設定。
namespace PaymentGateway; class Payment { public function process() { // } }
App::bind('payment', function() { return new \PaymentGateway\Payment; });
use Illuminate\Support\Facades\Facade; class Payment extends Facade { protected static function getFacadeAccessor() { return 'payment'; } }
Payment::process();
laravel影片教學】#
以上是laravel門面有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel - Artisan 指令 - Laravel 5.7 提供了處理和測試新指令的新方法。它包括測試 artisan 命令的新功能,下面提到了演示?

Laravel - Artisan Console - Laravel 框架提供了三種主要的命令列互動工具,分別是:Artisan、Ticker 和 REPL。本章詳細介紹了 Artisan。

Laravel - 分頁自訂 - Laravel 包含分頁功能,可協助使用者或開發人員包含分頁功能。 Laravel 分頁器與查詢產生器和 Eloquent ORM 整合。自動分頁方法

Laravel郵件發送失敗時的退信代碼獲取方法在使用Laravel開發應用時,經常會遇到需要發送驗證碼的情況。而在實�...

Laravel計劃任務運行無響應排查在使用Laravel的計劃任務調度時,不少開發者會遇到這樣的問題:schedule:run...

在dcatadmin(laravel-admin)中如何實現自定義點擊添加數據的表格功能在使用dcat...

Laravel - 轉儲伺服器 - Laravel 轉儲伺服器隨 Laravel 5.7 版本提供。先前的版本不包括任何轉儲伺服器。轉儲伺服器將成為 laravel/laravel Composer 檔案中的開發依賴項。
