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:
- Tạo một file lớp PHP
- Gán lớp đó vào Service Provider
- Đăng kí ServiceProvider cho Configapp.php thành provider
- Tạo một lớp mà trong class đó mở rọng ra thành lluminateSupportFacadesFacade.
- Đă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 |
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:
1
|
php artisan make:provider TestFacadesServiceProvider
|
Bước 2 – Sau khi tạo xong bạn sẽ nhận được:
Bước 3 – Tạo một class gọi là “TestFacades.php” tại “App/Test”.
1
2
3
4
5
6
7
8
9
|
<?php
namespace AppTest;
class TestFacades{
public function testingFacades(){
echo “Testing the Facades in Laravel.”;
}
}
?>
|
Bước 4 – Tạo một lớp Facade gọi là “TestFacades.php” tại “App/Test/Facades”.
1
2
3
4
5
6
7
|
<?php
namespace appTestFacades;
use IlluminateSupportFacadesFacade;
class TestFacades extends Facade{
protected static function getFacadeAccessor() { return ‘test’; }
}
|
Bước 5 – Tạo một lớp Facade gọi là “TestFacadesServiceProviders.php” tại “App/Test/Facades”.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<span class=“pun”><?</span><span class=“pln”>php
</span><span class=“kwd”>namespace</span> <span class=“typ”>App</span><span class=“pln”>Providers</span><span class=“pun”>;</span>
<span class=“kwd”>use</span> <span class=“typ”>App</span><span class=“pun”>;</span>
<span class=“kwd”>use</span> <span class=“typ”>Illuminate</span><span class=“pln”>SupportServiceProvider</span><span class=“pun”>;</span>
<span class=“kwd”>class</span> <span class=“typ”>TestFacadesServiceProvider</span> <span class=“kwd”>extends</span> <span class=“typ”>ServiceProvider</span> <span class=“pun”>{</span>
<span class=“kwd”>public</span> <span class=“kwd”>function</span><span class=“pln”> boot</span><span class=“pun”>()</span> <span class=“pun”>{</span>
<span class=“com”>//</span>
<span class=“pun”>}</span>
<span class=“kwd”>public</span> <span class=“kwd”>function</span> <span class=“kwd”>register</span><span class=“pun”>()</span> <span class=“pun”>{</span>
<span class=“typ”>App</span><span class=“pun”>::</span><span class=“pln”>bind</span><span class=“pun”>(</span><span class=“str”>‘test’</span><span class=“pun”>,</span><span class=“kwd”>function</span><span class=“pun”>()</span> <span class=“pun”>{</span>
<span class=“kwd”>return</span> <span class=“kwd”>new</span><span class=“pln”> AppTestTestFacades</span><span class=“pun”>;</span>
<span class=“pun”>});</span>
<span class=“pun”>}</span>
<span class=“pun”>}</span>
|
Bước 6 – Thêm một service provider trong file file config/app.php như dưới đây:
Bước 7 – Thêm một tên giả trong file config/app.php như dưới đây:
Bước 8 – Thêm những dòng sau vào app/Http/routes.php
1
2
3
|
Route::get(‘/facadeex’, function(){
return TestFacades::testingFacades();
});
|
Bước 9 – Vào URL sau để test Facade
http://localhost:8000/facadeex
Bước 10 – Kết quả