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 -