Laravel - Fasady
Fasady zapewniają staticinterfejs do klas, które są dostępne w kontenerze usług aplikacji. Laravelfacades służyć jako static proxies do klas bazowych w kontenerze usług, zapewniając korzyść w postaci zwięzłej, ekspresyjnej składni, zachowując jednocześnie większą testowalność i elastyczność niż tradycyjne metody statyczne.
Jak stworzyć elewację
Oto kroki tworzenia fasady w Laravel -
Step 1 - Utwórz plik klasy PHP.
Step 2 - Powiąż tę klasę z dostawcą usług.
Step 3 - Zarejestruj tego ServiceProvider w
Config \ app.php jako dostawcy.
Step 4 - Utwórz klasę, do której ta klasa rozszerza się
luminate \ Support \ Fasady \ Fasada.
Step 5 - Zarejestruj punkt 4 w Config \ app.php jako aliasy.
Odniesienie do klasy elewacji
Laravel ma wiele fasad. W poniższej tabeli przedstawiono wbudowane referencje klas Facade -
| Fasada | Klasa | Powiązanie kontenera usług |
|---|---|---|
| Aplikacja | Illuminate \ Foundation \ Application | aplikacja |
| Rzemieślnik | Illuminate \ Contracts \ Console \ Kernel | rzemieślnik |
| Auth | Illuminate \ Auth \ AuthManager | auth |
| Auth (instancja) | Podświetl \ Auth \ Guard | |
| Nóż | Illuminate \ View \ Compilers \ BladeCompiler | blade.compiler |
| Autobus | Oświetlenie \ Umowy \ Autobus \ Dyspozytor | |
| Pamięć podręczna | Illuminate \ Cache \ Repository | Pamięć podręczna |
| Config | Illuminate \ Config \ Repository | config |
| Ciastko | Illuminate \ Cookie \ CookieJar | ciastko |
| Krypta | Illuminate \ Encryption \ Encrypter | encrypter |
| DB | Illuminate \ Database \ DatabaseManager | db |
| DB (instancja) | Illuminate \ Baza danych \ Połączenie | |
| Zdarzenie | Illuminate \ Events \ Dispatcher | wydarzenia |
| Plik | Illuminate \ Filesystem \ Filesystem | akta |
| Brama | Illuminate \ Contracts \ Auth \ Access \ Gate | |
| Haszysz | Illuminate \ Contracts \ Hashing \ Hasher | haszysz |
| Wejście | Illuminate \ Http \ Request | żądanie |
| Lang | Illuminate \ Translation \ Translator | tłumacz |
| Log | Illuminate \ Log \ Writer | log |
| Poczta | Illuminate \ Mail \ Mailer | mailer |
| Hasło | Illuminate \ Auth \ Passwords \ PasswordBroker | auth.password |
| Kolejka | Illuminate \ Queue \ QueueManager | kolejka |
| Kolejka (instancja) | Illuminate \ Queue \ QueueInterface | |
| Kolejka (klasa podstawowa) | Illuminate \ Queue \ Queue | |
| Przeadresować | Illuminate \ Routing \ Redirector | przeadresować |
| Redis | Illuminate \ Redis \ Database | redis |
| Żądanie | Illuminate \ Http \ Request | żądanie |
| Odpowiedź | Illuminate \ Contracts \ Routing \ ResponseFactory | |
| Trasa | Podświetl \ Routing \ Router | router |
| Schemat | Illuminate \ Database \ Schema \ Blueprint | |
| Sesja | Illuminate \ Session \ SessionManager | sesja |
| Sesja (instancja) | Illuminate \ Session \ Store | |
| Przechowywanie | Illuminate \ Contracts \ Filesystem \ Factory | system plików |
| URL | Illuminate \ Routing \ UrlGenerator | url |
| Validator | Oświetlenie \ Walidacja \ Fabryka | walidator |
| Walidator (instancja) | Oświetlenie \ Walidacja \ Walidator | |
| Widok | Oświetlenie \ Widok \ Fabryka | widok |
| Widok (instancja) | Oświetl \ Widok \ Widok |
Przykład
Step 1 - Utwórz dostawcę usług o nazwie TestFacadesServiceProvider wykonując następujące polecenie.
php artisan make:provider TestFacadesServiceProvider
Step 2 - Po pomyślnym wykonaniu otrzymasz następujące dane wyjściowe -
Step 3 - Utwórz klasę o nazwie TestFacades.php w App/Test.
App/Test/TestFacades.php
<?php
namespace App\Test;
class TestFacades{
public function testingFacades() {
echo "Testing the Facades in Laravel.";
}
}
?>
Step 4 - Utwórz klasę Facade o nazwie “TestFacades.php” w “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 - Utwórz klasę Facade o nazwie TestFacadesServiceProviders.php w 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 - Dodaj usługodawcę w pliku config/app.php jak pokazano na poniższym rysunku.
config/app.php
Step 7 - Dodaj alias do pliku config/app.php jak pokazano na poniższym rysunku.
config/app.php
Step 8 - Dodaj następujące wiersze app/Http/routes.php.
app/Http/routes.php
Route::get('/facadeex', function() {
return TestFacades::testingFacades();
});
Step 9 - Odwiedź poniższy adres URL, aby przetestować fasadę.
http://localhost:8000/facadeex
Step 10 - Po odwiedzeniu adresu URL otrzymasz następujący wynik -