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

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程