Laravel Facades

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
Mail 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安全