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 -