Rumah >pembangunan bahagian belakang >tutorial php >Ketahui cara membuat fasad tersuai di Laravel
Laravel Facades: Titik Akses Mudah ke Perkhidmatan
Fasad Laravel menawarkan cara yang diselaraskan untuk berinteraksi dengan perkhidmatan, memudahkan akses melalui antara muka mesra pengguna. Pada mulanya, kaedah aksesor fasad mungkin kelihatan mengelirukan, tetapi memahami peranannya menjelaskan utilitinya. Fasad bertindak sebagai proksi mudah untuk perkhidmatan asas dalam bekas perkhidmatan Laravel. Mencari perkhidmatan yang dikaitkan dengan mana -mana fasad yang diberikan adalah terima kasih kepada kaedah getFacadeAccessor()
. Kaedah ini mengembalikan nama perkhidmatan berdaftar.
contohnya, aksesor facade DB
kelihatan seperti ini:
// Illuminate\Support\Facades\DB; protected static function getFacadeAccessor() { return 'db'; }
String 'db'
mengenal pasti perkhidmatan dalam bekas yang digunakan oleh fasad. Ini boleh disahkan menggunakan Tinker:
public function __call($method, $parameters) { if (static::hasMacro($method)) { return $this->macroCall($method, $parameters); } return $this->connection()->$method(...$parameters); }tanpa sambungan yang ditentukan,
lalai ke sambungan yang dikonfigurasikan (mis., DatabaseManager
Dalam contoh di atas). sqlite
Mewujudkan fasad tersuai
Walaupun tidak diperlukan untuk pembangunan aplikasi, mewujudkan fasad tersuai dapat meningkatkan produktiviti, terutama untuk perkhidmatan yang sering digunakan. Ini amat bermanfaat apabila bekerja dengan pembantu atau dalam ruang nama yang berdedikasi. Pendekatan ini mengimbangi fleksibiliti Laravel dengan konvensyen yang ditetapkan.
AppFacades
Untuk menjana fasad, gunakan perintah artisan:
Dengan mengandaikan anda telah menentukan perkhidmatan,
php artisan make:class App/Facades/Example, dalam penyedia perkhidmatan aplikasi anda, fasad akan dilaksanakan seperti berikut:
AppExampleService
namespace App\Facades; use Illuminate\Support\Facades\Facade; class Example extends Facade { protected static function getFacadeAccessor() { return 'example_service'; } }
Kelebihan fasad yang signifikan adalah kemudahan mengejek perkhidmatan yang mendasari semasa ujian:
protected static function getFacadeAccessor() { return \App\ExampleService::class; }
tanpa fasad, Laravel menawarkan kaedah seperti
use App\Facades\Example; Example::shouldReceive('getLatestPosts') ->with($after_date) ->andReturn($test_posts);untuk keupayaan mengejek yang serupa:
partialMock()
$mock = $this->partialMock(MyApiService::class, function (MockInterface $mock) { $mock->shouldReceive('getLatestPosts') ->with($after_date) ->andReturn($test_posts); });
Atas ialah kandungan terperinci Ketahui cara membuat fasad tersuai di Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!