Facades cung cấp một giao diện “tĩnh” tới các lớp khả dụng cho service của ứng dụng. Facade trong Laravel phục vụ như là một “proxy tĩnh” để đặt dưới các lớp trong container của service, cung cấp lợi ích một cách ngắn gọn, biểu lộ cú pháp để duy trì được sự linh hoạt hơn các phương thức tĩnh truyền thống.

>>> Xem full Series về Laravel Framework <<<

Làm thế nào để tạo Facade?

Sau đây là những bước để tạo Facade trong Laravel:

  1. Tạo một file lớp PHP
  2. Gán lớp đó vào Service Provider
  3. Đăng kí ServiceProvider cho Configapp.php thành provider
  4. Tạo một lớp mà trong class đó mở rọng ra thành lluminateSupportFacadesFacade.
  5. Đăng kí điểm 4 tới Configapp.php bằng tên giả.

Reference lớp Facade

Laravel truyền tới rất nhiều Facades. Sau đây là những lớp Facade được tích hợp sẵn references.

Facade Lớp Gán service container
App IlluminateFoundationApplication app
Artisan IlluminateContractsConsoleKernel artisan
Auth IlluminateAuthAuthManager auth
Auth (Instance) IlluminateAuthGuard  
Blade IlluminateViewCompilersBladeCompiler blade.compiler
Bus IlluminateContractsBusDispatcher  
Cache IlluminateCacheRepository cache
Config IlluminateConfigRepository config
Cookie IlluminateCookieCookieJar cookie
Crypt IlluminateEncryptionEncrypter encrypter
DB IlluminateDatabaseDatabaseManager db
DB (Instance) IlluminateDatabaseConnection  
Event IlluminateEventsDispatcher events
File IlluminateFilesystemFilesystem files
Gate IlluminateContractsAuthAccessGate  
Hash IlluminateContractsHashingHasher hash
Input IlluminateHttpRequest request
Lang IlluminateTranslationTranslator translator
Log IlluminateLogWriter log
Mail IlluminateMailMailer mailer
Password IlluminateAuthPasswordsPasswordBroker auth.password
Queue IlluminateQueueQueueManager queue
Queue (Instance) IlluminateQueueQueueInterface  
Queue (Base Class) IlluminateQueueQueue  
Redirect IlluminateRoutingRedirector redirect
Redis IlluminateRedisDatabase redis
Request IlluminateHttpRequest request
Response IlluminateContractsRoutingResponseFactory  
Route IlluminateRoutingRouter router
Schema IlluminateDatabaseSchemaBlueprint  
Session IlluminateSessionSessionManager session
Session (Instance) IlluminateSessionStore  
Storage IlluminateContractsFilesystemFactory filesystem
URL IlluminateRoutingUrlGenerator url
Validator IlluminateValidationFactory validator
Validator (Instance) IlluminateValidationValidator  
View IlluminateViewFactory view
View (Instance) IlluminateViewView

Ví dụ

Tips: Chuẩn bị kĩ năng lập trình PHP thật tốt trước khi học Laravel.

Bước 1 –  Tạo một service provider tên là TestFacadesServiceProvider bằng lệnh sau:

Bước 2 – Sau khi tạo xong bạn sẽ nhận được:

facadesserviceprovider

Bước 3 – Tạo một class gọi là “TestFacades.php” tại “App/Test”.

Bước 4 – Tạo một lớp Facade gọi là “TestFacades.php” tại “App/Test/Facades”.

Bước 5 – Tạo một lớp Facade gọi là “TestFacadesServiceProviders.php” tại “App/Test/Facades”.

Bước 6 – Thêm một service provider trong file file config/app.php như dưới đây:

service_provider

Bước 7 – Thêm một tên giả trong file config/app.php như dưới đây:

alias

Bước 8 – Thêm những dòng sau vào app/Http/routes.php

Bước 9 – Vào URL sau để test Facade

http://localhost:8000/facadeex

Bước 10 – Kết quả

testing_facades