当前位置: 首页 > 文档资料 > Laravel 入门教程 >

外墙(Facades)

优质
小牛编辑
130浏览
2023-12-01

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

如何创建Facade

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

  • Step 1 - 创建PHP类文件。

  • Step 2 - 将该类绑定到服务提供者。

  • Step 3 - 将ServiceProvider注册到

    Config\app.php作为提供者。

  • Step 4 - 创建此类扩展到的类

    lluminate的\ Support \外立面\门面。

  • Step 5 - 将Step 5点注册到Config\app.php作为别名。

门面类参考

Laravel船上有许多外墙。 下表显示了内置的Facade类引用 -

正面服务容器绑定
AppIlluminate\Foundation\Applicationapp
ArtisanIlluminate\Contracts\Console\Kernelartisan
AuthIlluminate\Auth\AuthManagerauth
验证(实例)Illuminate\Auth\Guard
BladeIlluminate\View\Compilers\BladeCompilerblade.compiler
BusIlluminate\Contracts\Bus\Dispatcher
CacheIlluminate\Cache\Repositorycache
ConfigIlluminate\Config\Repositoryconfig
CookieIlluminate\Cookie\CookieJarcookie
CryptIlluminate\Encryption\Encrypterencrypter
DBIlluminate\Database\DatabaseManagerdb
DB(实例)Illuminate\Database\Connection
EventIlluminate\Events\Dispatcherevents
FileIlluminate\Filesystem\Filesystemfiles
GateIlluminate\Contracts\Auth\Access\Gate
HashIlluminate\Contracts\Hashing\Hasherhash
InputIlluminate\Http\Requestrequest
LangIlluminate\Translation\Translatortranslator
LogIlluminate\Log\Writerlog
MailIlluminate\Mail\Mailermailer
PasswordIlluminate\Auth\Passwords\PasswordBrokerauth.password
QueueIlluminate\Queue\QueueManagerqueue
队列(实例)Illuminate\Queue\QueueInterface
队列(基类)Illuminate\Queue\Queue
RedirectIlluminate\Routing\Redirectorredirect
RedisIlluminate\Redis\Databaseredis
RequestIlluminate\Http\Requestrequest
ResponseIlluminate\Contracts\Routing\ResponseFactory
RouteIlluminate\Routing\Routerrouter
SchemaIlluminate\Database\Schema\Blueprint
SessionIlluminate\Session\SessionManagersession
会话(实例)Illuminate\Session\Store
StorageIlluminate\Contracts\Filesystem\Factoryfilesystem
URLIlluminate\Routing\UrlGeneratorurl
ValidatorIlluminate\Validation\Factoryvalidator
验证者(实例)Illuminate\Validation\Validator
ViewIlluminate\View\Factoryview
查看(实例)Illuminate\View\View

例子 (Example)

Step 1 - 通过执行以下命令创建名为TestFacadesServiceProvider的服务提供者。

php artisan make:provider TestFacadesServiceProvider

Step 2 - 成功执行后,您将收到以下输出 -

FacadesServiceProvider

Step 3 - 在App/Test创建一个名为TestFacades.php的类。

App/Test/TestFacades.php

<?php
   namespace App\Test;
   class TestFacades{
      public function testingFacades(){
         echo "Testing the Facades in Laravel.";
      }
   }
?>

Step 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'; }
}

Step 5 - 在App/Test/Facades.创建一个名为TestFacadesServiceProviders.php的Facade类App/Test/Facades.

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;
      });
   }
}

Step 6 - 在文件config/app.php添加服务提供者,如下图所示。

config/app.php

服务提供者

Step 7 - 在文件config/app.php添加别名,如下图所示。

config/app.php

别号

Step 8 - 在app/Http/routes.php.添加以下行app/Http/routes.php.

app/Http/routes.php

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

Step 9 - 访问以下URL以测试Facade。

http://localhost:8000/facadeex

Step 10 - 访问URL后,您将收到以下输出 -

测试外墙