Facades提供了一個“靜態”的介面到應用程式的服務容器中可用的類。 Laravel 的“facades”作為“靜態代理”在服務容器底層類,提供了一個簡潔, 富有表現的語法,同時保持比傳統的靜態方法更有可測試性和靈活性。
如何創建Facade
以下是在Laravel創建 Facade 的步驟:
-
第1步 - 創建PHP類檔
-
第2步 - 綁定類到服務提供者
-
第3步- 註冊服務提供者到 Config\app.php 作為供應者
-
第4步- 創建類,這個類是擴展lluminate\Support\Facades\Facade
-
第5步- 註冊第4點到 Config\app.php 作為別名
Facade類參考
Laravel附帶許多Facades。下麵是內置的Facades類引用。
| Facade | 類 |
服務容器綁定
|
|---|---|---|
| App | Illuminate\Foundation\Application | app |
| Artisan | Illuminate\Contracts\Console\Kernel | artisan |
| Auth | Illuminate\Auth\AuthManager | auth |
| Auth (Instance) | Illuminate\Auth\Guard |
|
| Blade | Illuminate\View\Compilers\BladeCompiler | blade.compiler |
| Bus | Illuminate\Contracts\Bus\Dispatcher |
|
| Cache | Illuminate\Cache\Repository | cache |
| Config | Illuminate\Config\Repository | config |
| Cookie | Illuminate\Cookie\CookieJar | cookie |
| Crypt | Illuminate\Encryption\Encrypter | encrypter |
| DB | Illuminate\Database\DatabaseManager | db |
| DB (Instance) | Illuminate\Database\Connection |
|
| Event | Illuminate\Events\Dispatcher | events |
| File | Illuminate\Filesystem\Filesystem | files |
| Gate | Illuminate\Contracts\Auth\Access\Gate |
|
| Hash | Illuminate\Contracts\Hashing\Hasher | hash |
| Input | Illuminate\Http\Request | request |
| Lang | Illuminate\Translation\Translator | translator |
| Log | Illuminate\Log\Writer | log |
| Illuminate\Mail\Mailer | mailer | |
| Password | Illuminate\Auth\Passwords\PasswordBroker | auth.password |
| Queue | Illuminate\Queue\QueueManager | queue |
| Queue (Instance) | Illuminate\Queue\QueueInterface |
|
| Queue (Base Class) | Illuminate\Queue\Queue |
|
| Redirect | Illuminate\Routing\Redirector | redirect |
| Redis | Illuminate\Redis\Database | redis |
| Request | Illuminate\Http\Request | request |
| Response | Illuminate\Contracts\Routing\ResponseFactory |
|
| Route | Illuminate\Routing\Router | router |
| Schema | Illuminate\Database\Schema\Blueprint |
|
| Session | Illuminate\Session\SessionManager | session |
| Session (Instance) | Illuminate\Session\Store |
|
| Storage | Illuminate\Contracts\Filesystem\Factory | filesystem |
| URL | Illuminate\Routing\UrlGenerator | url |
| Validator | Illuminate\Validation\Factory | validator |
| Validator (Instance) | Illuminate\Validation\Validator |
|
| View | Illuminate\View\Factory | view |
| View (Instance) | Illuminate\View\View |
|
示例
第1步- 執行以下命令創建一個叫作 TestFacadesServiceProvider 的服務提供者。
php artisan make:provider TestFacadesServiceProvider
第2步 - 成功執行後,您會收到以下輸出 -


第3步 - 在“App/Test”創建一個名為 “TestFacades.php”的類
App/Test/TestFacades.php
<?php
namespace App\Test;
class TestFacades{
public function testingFacades(){
echo "Testing the Facades in Laravel.";
}
}
第4步 - 在“App/Test/Facades”創建一個名為“TestFacades.php” 的一個Facade類。
App/Test/Facades/TestFacades.php
<?php
namespace app\Test\Facades;
use Illuminate\Support\Facades\Facade;
class TestFacades extends Facade{
protected static function getFacadeAccessor() { return 'test'; }
}
第5步- 在“App/Test/Facades”創建一個名為 “TestFacadesServiceProviders.php”的一個Facade類。
App/Providers/TestFacadesServiceProvider.php
<?php
namespace App\Providers;
use App;
use Illuminate\Support\ServiceProvider;
class TestFacadesServiceProvider extends ServiceProvider {
public function boot() {
//
}
public function register() {
App::bind('test',function() {
return new \App\Test\TestFacades;
});
}
}
第6步 - 在檔 config/app.php 中添加一個服務提供者如圖所示如下圖。
config/app.php

第7步 - 在檔 config/app.php 中添加別名如圖所示如下圖。
config/app.php

'TestFacades' => App\Test\Facades\TestFacades::class,
第8步 - 添加以下行到檔 - app/Http/routes.php
app/Http/routes.php
Route::get('/facadeex', function(){
return TestFacades::testingFacades();
});
第9步 - 訪問以下網址測試 Facade
http://localhost:8000/facadeex
第10步 - 訪問URL後,您會收到以下輸出 -

上一篇:
Laravel事件處理
下一篇:
Laravel安全
