Rumah >pembangunan bahagian belakang >tutorial php >Ketahui cara membuat fasad tersuai di Laravel

Ketahui cara membuat fasad tersuai di Laravel

Karen Carpenter
Karen Carpenterasal
2025-03-06 02:37:12533semak imbas

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:

Learn how to create custom Facades in Laravel

Beberapa fasad mungkin mewakilkan kaedah panggilan ke kelas pengurus, yang seterusnya berinteraksi dengan kelas sambungan makro atau pangkalan data peringkat rendah:

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

Dokumentasi Laravel memberikan butiran komprehensif mengenai fungsi fasad dan senarai lengkap fasad yang tersedia.

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

Sebagai alternatif, jika tiada alias ditakrifkan, atau rentetan tidak digunakan dalam penyedia perkhidmatan, anda boleh menggunakan nama kelas yang berkelayakan sepenuhnya:
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()

Akhirnya, pilihan antara menggunakan fasad dan kaedah lain bergantung kepada keutamaan individu dan keperluan projek. Walau bagaimanapun, untuk perkhidmatan yang sering diakses, fasad dapat meningkatkan kebolehbacaan dan kebolehkerjaan kod tanpa mengorbankan manfaat suntikan ketergantungan.
$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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn