Laravel - Façades
Les façades offrent un staticinterface aux classes disponibles dans le conteneur de services de l'application. Laravelfacades sert comme static proxies aux classes sous-jacentes dans le conteneur de services, offrant l'avantage d'une syntaxe concise et expressive tout en maintenant plus de testabilité et de flexibilité que les méthodes statiques traditionnelles.
Comment créer une façade
Voici les étapes pour créer une façade à Laravel -
Step 1 - Créez un fichier de classe PHP.
Step 2 - Liez cette classe au fournisseur de services.
Step 3 - Enregistrez ce ServiceProvider pour
Config \ app.php en tant que fournisseurs.
Step 4 - Créer une classe qui est cette classe s'étend à
Illuminate \ Support \ Façades \ Façade.
Step 5 - Enregistrez le point 4 dans Config \ app.php comme alias.
Référence de classe de façade
Laravel est livré avec de nombreuses façades. Le tableau suivant montre les références de classe de façade intégrées -
Façade | Classe | Liaison de conteneur de service |
---|---|---|
App | Illuminate \ Foundation \ Application | app |
Artisan | Illuminate \ Contracts \ Console \ Kernel | artisan |
Auth | Illuminate \ Auth \ AuthManager | auth |
Auth (instance) | Illuminate \ Auth \ Guard | |
Lame | Illuminate \ View \ Compilers \ BladeCompiler | blade.compiler |
Autobus | Illuminate \ Contracts \ Bus \ Dispatcher | |
Cache | Illuminate \ Cache \ Repository | cache |
Config | Illuminate \ Config \ Repository | config |
Biscuit | Illuminer \ Cookie \ CookieJar | biscuit |
Crypte | Illuminate \ Encryption \ Encrypter | chiffreur |
DB | Illuminate \ Database \ DatabaseManager | db |
DB (instance) | Illuminate \ Database \ Connection | |
un événement | Illuminate \ Events \ Dispatcher | événements |
Fichier | Illuminate \ Filesystem \ Filesystem | des dossiers |
Porte | Illuminate \ Contracts \ Auth \ Access \ Gate | |
Hacher | Illuminate \ Contracts \ Hashing \ Hasher | hacher |
Contribution | Illuminate \ Http \ Request | demande |
Lang | Illuminate \ Translation \ Translator | traducteur |
Journal | Illuminate \ Log \ Writer | Journal |
Courrier | Illuminate \ Mail \ Mailer | courrier |
Mot de passe | Illuminate \ Auth \ Passwords \ PasswordBroker | auth.password |
Queue | Illuminate \ Queue \ QueueManager | queue |
File d'attente (instance) | Illuminate \ Queue \ QueueInterface | |
File d'attente (classe de base) | Illuminate \ Queue \ Queue | |
Réorienter | Illuminate \ Routing \ Redirector | réorienter |
Redis | Illuminate \ Redis \ Database | redis |
Demande | Illuminate \ Http \ Request | demande |
Réponse | Illuminate \ Contracts \ Routing \ ResponseFactory | |
Route | Illuminate \ Routing \ Router | routeur |
Schéma | Illuminate \ Database \ Schema \ Blueprint | |
Session | Illuminate \ Session \ SessionManager | session |
Session (instance) | Illuminate \ Session \ Store | |
Espace de rangement | Illuminate \ Contracts \ Filesystem \ Factory | système de fichiers |
URL | Illuminate \ Routing \ UrlGenerator | URL |
Validateur | Illuminate \ Validation \ Factory | validateur |
Validateur (instance) | Illuminate \ Validation \ Validator | |
Vue | Illuminate \ View \ Factory | vue |
Afficher (instance) | Illuminate \ View \ View |
Exemple
Step 1 - Créez un fournisseur de services appelé TestFacadesServiceProvider en exécutant la commande suivante.
php artisan make:provider TestFacadesServiceProvider
Step 2 - Après une exécution réussie, vous recevrez la sortie suivante -
Step 3 - Créez une classe appelée TestFacades.php à App/Test.
App/Test/TestFacades.php
<?php
namespace App\Test;
class TestFacades{
public function testingFacades() {
echo "Testing the Facades in Laravel.";
}
}
?>
Step 4 - Créez une classe de façade appelée “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 - Créez une classe de façade appelée TestFacadesServiceProviders.php à 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 - Ajouter un fournisseur de services dans un fichier config/app.php comme indiqué dans la figure ci-dessous.
config/app.php
Step 7 - Ajouter un alias dans un fichier config/app.php comme indiqué dans la figure ci-dessous.
config/app.php
Step 8 - Ajoutez les lignes suivantes dans app/Http/routes.php.
app/Http/routes.php
Route::get('/facadeex', function() {
return TestFacades::testingFacades();
});
Step 9 - Visitez l'URL suivante pour tester la façade.
http://localhost:8000/facadeex
Step 10 - Après avoir visité l'URL, vous recevrez la sortie suivante -