鍍金池/ 教程/ PHP/ Laravel Facades
Laravel操作數(shù)據(jù)庫
Laravel會話(session)
Laravel文件上傳
Laravel Cookie
Laravel Facades
Laravel應(yīng)用程序結(jié)構(gòu)
Laravel響應(yīng)
Laravel插入數(shù)據(jù)庫表數(shù)據(jù)
Laravel錯誤處理
Laravel環(huán)境安裝配置
Laravel本地化
Laravel Ajax
Laravel路由
Laravel錯誤和日志記錄
Laravel檢索查詢數(shù)據(jù)
Laravel更新數(shù)據(jù)
Laravel刪除數(shù)據(jù)
Laravel表單處理
Laravel中間件
Laravel控制器
Laravel驗證
Laravel安全
Laravel請求
Laravel發(fā)送郵件
Laravel重定向
Laravel教程
Laravel配置
Laravel事件處理
Laravel視圖

Laravel Facades

Facades提供了一個“靜態(tài)”的接口到應(yīng)用程序的服務(wù)容器中可用的類。 Laravel 的“facades”作為“靜態(tài)代理”在服務(wù)容器底層類,提供了一個簡潔, 富有表現(xiàn)的語法,同時保持比傳統(tǒng)的靜態(tài)方法更有可測試性和靈活性。

如何創(chuàng)建Facade

以下是在Laravel創(chuàng)建 Facade 的步驟:
  • 第1步 - 創(chuàng)建PHP類文件
  • 第2步 - 綁定類到服務(wù)提供者
  • 第3步- 注冊服務(wù)提供者到 Config\app.php 作為供應(yīng)者
  • 第4步- 創(chuàng)建類,這個類是擴(kuò)展lluminate\Support\Facades\Facade
  • 第5步- 注冊第4點到 Config\app.php 作為別名

Facade類參考

Laravel附帶許多Facades。下面是內(nèi)置的Facades類引用。
Facade
服務(wù)容器綁定
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步- 執(zhí)行以下命令創(chuàng)建一個叫作 TestFacadesServiceProvider 的服務(wù)提供者。
php artisan make:provider TestFacadesServiceProvider
第2步 - 成功執(zhí)行后,您會收到以下輸出 -

第3步 - 在“App/Test”創(chuàng)建一個名為 “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”創(chuàng)建一個名為“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”創(chuàng)建一個名為 “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 中添加一個服務(wù)提供者如圖所示如下圖。

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步 - 訪問以下網(wǎng)址測試 Facade

http://localhost:8000/facadeex

第10步 - 訪問URL后,您會收到以下輸出 -