Laravel - Facades

Facades 为应用程序服务容器中可用的类提供静态接口。Laravel facades 充当服务容器中底层类的静态代理,提供简洁、富有表现力的语法优势,同时比传统静态方法保持更高的可测试性和灵活性。

如何创建 Facade

以下是在 Laravel 中创建 Facade 的步骤 −

  • 步骤 1 − 创建 PHP 类文件。

  • 步骤 2 − 将该类绑定到服务提供商。

  • 步骤 3 −将该 ServiceProvider 注册到

    Config\app.php 作为提供程序。

  • 步骤 4 − 创建该类扩展的类

    lluminate\Support\Facades\Facade。

  • 步骤 5 − 将第 4 点注册到 Config\app.php 作为别名。

Facade 类参考

Laravel 附带许多 Facade。下表显示内置的 Facade 类参考 −

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 − 执行成功后,您将收到以下输出 −

FacadesServiceProvider

步骤 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/TestFacadesServiceProviders.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

别名

步骤 8 −在 app/Http/routes.php 中添加以下几行。

app/Http/routes.php

Route::get('/facadeex', function() {
    return TestFacades::testingFacades();
});

步骤 9 − 访问以下 URL 以测试 Facade。

http://localhost:8000/facadeex

步骤 10 − 访问 URL 后,您将收到以下输出 −

Testing Facades