Laravel - Fachadas

Fachadas fornecem um staticinterface para classes que estão disponíveis no contêiner de serviço do aplicativo. Laravelfacades servir como static proxies às classes subjacentes no contêiner de serviço, fornecendo o benefício de uma sintaxe concisa e expressiva, enquanto mantém mais capacidade de teste e flexibilidade do que os métodos estáticos tradicionais.

Como criar uma fachada

A seguir estão as etapas para criar uma fachada no Laravel -

  • Step 1 - Criar arquivo de classe PHP.

  • Step 2 - Vincule essa classe ao provedor de serviços.

  • Step 3 - Registre esse ServiceProvider para

    Config \ app.php como provedores.

  • Step 4 - Criar classe que esta classe se estende a

    lluminate \ Support \ Facades \ Facade.

  • Step 5 - Registre o ponto 4 em Config \ app.php como aliases.

Referência de classe de fachada

O Laravel vem com muitas fachadas. A tabela a seguir mostra as referências da classe Facade integradas -

Fachada Classe Ligação de contêiner de serviço
Aplicativo Illuminate \ Foundation \ Application aplicativo
Artesão Illuminate \ Contracts \ Console \ Kernel artesão
Auth Illuminate \ Auth \ AuthManager auth
Auth (instância) Illuminate \ Auth \ Guard
Lâmina Illuminate \ View \ Compilers \ BladeCompiler blade.compiler
Ônibus Illuminate \ Contracts \ Bus \ Dispatcher
Cache Illuminate \ Cache \ Repository esconderijo
Config Illuminate \ Config \ Repository config
Bolacha Illuminate \ Cookie \ CookieJar bolacha
Cripta Illuminate \ Encryption \ Encrypter criptografador
DB Illuminate \ Database \ DatabaseManager db
DB (instância) Illuminate \ Database \ Connection
Evento Illuminate \ Events \ Dispatcher eventos
Arquivo Illuminate \ Filesystem \ Filesystem arquivos
Portão Illuminate \ Contracts \ Auth \ Access \ Gate
Cerquilha Iluminar \ Contratos \ Hashing \ Hasher cerquilha
Entrada Illuminate \ Http \ Request solicitação
Lang Iluminar \ Tradução \ Tradutor tradutor
Registro Illuminate \ Log \ Writer registro
Enviar Illuminate \ Mail \ Mailer mailer
Senha Illuminate \ Auth \ Passwords \ PasswordBroker auth.password
Fila Illuminate \ Queue \ QueueManager fila
Fila (instância) Illuminate \ Queue \ QueueInterface
Fila (classe base) Illuminate \ Queue \ Queue
Redirecionar Illuminate \ Routing \ Redirector redirecionar
Redis Illuminate \ Redis \ Database redis
Solicitação Illuminate \ Http \ Request solicitação
Resposta Illuminate \ Contracts \ Routing \ ResponseFactory
Rota Illuminate \ Routing \ Router roteador
Esquema Illuminate \ Database \ Schema \ Blueprint
Sessão Illuminate \ Session \ SessionManager sessão
Sessão (instância) Illuminate \ Session \ Store
Armazenamento Illuminate \ Contracts \ Filesystem \ Factory sistema de arquivo
URL Illuminate \ Routing \ UrlGenerator url
Validador Iluminar \ Validação \ Fábrica validador
Validador (instância) Illuminate \ Validation \ Validator
Visão Iluminar \ Exibir \ Fábrica Visão
Exibir (instância) Iluminar \ Exibir \ Exibir

Exemplo

Step 1 - Crie um provedor de serviços chamado TestFacadesServiceProvider executando o seguinte comando.

php artisan make:provider TestFacadesServiceProvider

Step 2 - Após a execução bem-sucedida, você receberá a seguinte saída -

Step 3 - Crie uma classe chamada TestFacades.php em App/Test.

App/Test/TestFacades.php

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

Step 4 - Crie uma classe Facade chamada “TestFacades.php” em “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 - Crie uma classe Facade chamada TestFacadesServiceProviders.php em 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 - Adicionar um provedor de serviços em um arquivo config/app.php conforme mostrado na figura abaixo.

config/app.php

Step 7 - Adicionar um alias em um arquivo config/app.php conforme mostrado na figura abaixo.

config/app.php

Step 8 - Adicione as seguintes linhas em app/Http/routes.php.

app/Http/routes.php

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

Step 9 - Visite o seguinte URL para testar a fachada.

http://localhost:8000/facadeex

Step 10 - Depois de visitar o URL, você receberá a seguinte saída -