Laravel - Facades

  • 简述

    Facades提供了static应用程序服务容器中可用的类的接口。拉维尔facades作为提供服务static proxies服务容器中的底层类,提供简洁、富有表现力的语法的优点,同时保持比传统静态方法更高的可测试性和灵活性。
  • 如何创建门面

    以下是在 Laravel 中创建 Facade 的步骤 -
    • Step 1− 创建 PHP 类文件。
    • Step 2− 将该类绑定到服务提供者。
    • Step 3− 将该服务提供商注册到
      Config\app.php 作为提供者。
    • Step 4− 创建类,该类扩展为
      照亮\支持\立面\立面。
    • Step 5− 将点 4 作为别名注册到 Config\app.php。
  • 外观类参考

    Laravel 附带了许多 Facade。下表显示了内置的 Facade 类引用 -
    Facade Class Service Container Binding
    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

    例子

    Step 1− 创建一个名为的服务提供者TestFacadesServiceProvider通过执行以下命令。
    
    php artisan make:provider TestFacadesServiceProvider
    
    Step 2− 成功执行后,您将收到以下输出 −
    Facades服务提供商
    Step 3− 创建一个名为TestFacades.phpApp/Test.
    App/Test/TestFacades.php
    
    <?php
       namespace App\Test;
       class TestFacades{
          public function testingFacades() {
             echo "Testing the Facades in Laravel.";
          }
       }
    ?>
    
    Step 4− 创建一个 Facade 类,名为“TestFacades.php”“App/Test/Facades”.
    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− 创建一个 Facade 类,名为TestFacadesServiceProviders.phpApp/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
    
    Route::get('/facadeex', function() {
       return TestFacades::testingFacades();
    });
    
    Step 9− 访问以下 URL 来测试 Facade。
    
    http://localhost:8000/facadeex
    
    Step 10− 访问 URL 后,您将收到以下输出 −
    测试Facades