Laravel - อาคาร
ซุ้มให้ staticอินเทอร์เฟซกับคลาสที่มีอยู่ในคอนเทนเนอร์บริการของแอปพลิเคชัน ลาราเวลfacades ทำหน้าที่เป็น static proxies ไปยังคลาสพื้นฐานในที่เก็บบริการโดยให้ประโยชน์ของไวยากรณ์ที่สั้นและแสดงออกในขณะที่ยังคงความสามารถในการทดสอบและความยืดหยุ่นได้มากกว่าวิธีการคงที่แบบเดิม
วิธีสร้าง Facade
ต่อไปนี้เป็นขั้นตอนในการสร้าง Facade ใน Laravel -
Step 1 - สร้างไฟล์คลาส PHP
Step 2 - ผูกคลาสนั้นกับผู้ให้บริการ
Step 3 - ลงทะเบียน ServiceProvider เพื่อ
กำหนดค่า \ app.php เป็นผู้ให้บริการ
Step 4 - สร้างคลาสซึ่งคลาสนี้ขยายไปถึง
ส่องสว่าง \ Support \ Facades \ Facade
Step 5 - ลงทะเบียนจุดที่ 4 เพื่อ Config \ app.php เป็นนามแฝง
การอ้างอิงชั้น Facade
Laravel มาพร้อมกับ Facades มากมาย ตารางต่อไปนี้แสดงการอ้างอิงคลาส Facade ในตัว -
ซุ้ม | คลาส | บริการเข้าเล่มคอนเทนเนอร์ |
---|---|---|
แอป | Illuminate \ Foundation \ Application | แอป |
ช่าง | Illuminate \ Contracts \ Console \ Kernel | ช่าง |
Auth | Illuminate \ Auth \ AuthManager | รับรองความถูกต้อง |
Auth (อินสแตนซ์) | ส่องสว่าง \ Auth \ Guard | |
ใบมีด | Illuminate \ View \ Compilers \ BladeCompiler | blade.compiler |
รถบัส | Illuminate \ Contracts \ Bus \ Dispatcher | |
แคช | Illuminate \ Cache \ Repository | แคช |
Config | ส่องสว่าง \ Config \ Repository | config |
คุกกี้ | Illuminate \ Cookie \ CookieJar | คุกกี้ |
Crypt | ส่องสว่าง \ Encryption \ Encrypter | ผู้เข้ารหัส |
DB | Illuminate \ Database \ DatabaseManager | db |
DB (อินสแตนซ์) | ส่องสว่าง \ Database \ Connection | |
เหตุการณ์ | Illuminate \ Events \ Dispatcher | เหตุการณ์ |
ไฟล์ | ส่องสว่าง \ Filesystem \ Filesystem | ไฟล์ |
ประตู | Illuminate \ Contracts \ Auth \ Access \ Gate | |
กัญชา | Illuminate \ Contracts \ Hashing \ Hasher | กัญชา |
อินพุต | ส่องสว่าง \ Http \ ขอ | คำขอ |
หรั่ง | Illuminate \ Translation \ Translator | นักแปล |
บันทึก | Illuminate \ Log \ Writer | บันทึก |
จดหมาย | ส่องสว่าง \ Mail \ Mailer | จดหมาย |
รหัสผ่าน | ส่องสว่าง \ Auth \ Passwords \ PasswordBroker | auth.password |
คิว | Illuminate \ Queue \ QueueManager | คิว |
คิว (อินสแตนซ์) | Illuminate \ Queue \ QueueInterface | |
คิว (คลาสฐาน) | ส่องสว่าง \ Queue \ Queue | |
เปลี่ยนเส้นทาง | ส่องสว่าง \ Routing \ Redirector | เปลี่ยนเส้นทาง |
Redis | ส่องสว่าง \ Redis \ Database | redis |
ขอ | ส่องสว่าง \ Http \ ขอ | คำขอ |
การตอบสนอง | Illuminate \ Contracts \ Routing \ ResponseFactory | |
เส้นทาง | ส่องสว่าง \ Routing \ Router | เราเตอร์ |
สคีมา | Illuminate \ Database \ Schema \ Blueprint | |
เซสชัน | Illuminate \ Session \ SessionManager | เซสชัน |
เซสชัน (อินสแตนซ์) | Illuminate \ Session \ Store | |
การจัดเก็บ | Illuminate \ Contracts \ Filesystem \ Factory | ระบบไฟล์ |
URL | Illuminate \ Routing \ UrlGenerator | url |
Validator | ส่องสว่าง \ Validation \ Factory | ตัวตรวจสอบความถูกต้อง |
Validator (อินสแตนซ์) | ส่องสว่าง \ Validation \ Validator | |
ดู | ส่องสว่างดูโรงงาน | ดู |
ดู (อินสแตนซ์) | สว่าง \ View \ View |
ตัวอย่าง
Step 1 - สร้างผู้ให้บริการที่เรียกว่า TestFacadesServiceProvider โดยดำเนินการคำสั่งต่อไปนี้
php artisan make:provider TestFacadesServiceProvider
Step 2 - หลังจากดำเนินการสำเร็จคุณจะได้รับผลลัพธ์ต่อไปนี้ -
Step 3 - สร้างคลาสที่เรียกว่า 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 - สร้างคลาส Facade ที่เรียกว่า “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 - สร้างคลาส Facade ที่เรียกว่า 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 - เพิ่มผู้ให้บริการในไฟล์ config/app.php ดังแสดงในรูปด้านล่าง
config/app.php
Step 7 - เพิ่มนามแฝงในไฟล์ config/app.php ดังแสดงในรูปด้านล่าง
config/app.php
Step 8 - เพิ่มบรรทัดต่อไปนี้ใน app/Http/routes.php.
app/Http/routes.php
Route::get('/facadeex', function() {
return TestFacades::testingFacades();
});
Step 9 - ไปที่ URL ต่อไปนี้เพื่อทดสอบ Facade
http://localhost:8000/facadeex
Step 10 - หลังจากเข้าไปที่ URL คุณจะได้รับผลลัพธ์ต่อไปนี้ -