Featured image of post Apa Perbedaan antara Metode register() dan boot() di ServiceProvider Laravel, dan Bagaimana Penggunaannya dalam Skenario Apa?

Apa Perbedaan antara Metode register() dan boot() di ServiceProvider Laravel, dan Bagaimana Penggunaannya dalam Skenario Apa?

Apa Perbedaan antara Metode register() dan boot() di ServiceProvider Laravel, dan Bagaimana Penggunaannya dalam Skenario Apa?

Perbandingan Metode register() dan boot()

Dalam ServiceProvider Laravel, perbedaan utama antara metode register() dan boot() terletak pada waktu eksekusi dan tujuannya.

register() boot()
Penjelasan Digunakan untuk mengikat layanan ke service container. Digunakan untuk menjalankan operasi yang bergantung pada layanan yang sudah terdaftar.
Waktu Eksekusi Dijalankan sebelum semua penyedia layanan terdaftar. Dijalankan setelah semua penyedia layanan selesai mendaftar.
Penggunaan Utama Mendaftarkan binding, singleton, layanan, dll. Mendaftarkan event listener, rute, direktif Blade, dll.
Catatan Sebaiknya tidak menggunakan layanan dari penyedia layanan lain, karena mungkin belum terdaftar. Dapat dengan aman menggunakan layanan dari penyedia layanan lain.

Contoh Skenario Penggunaan

Menggunakan register()

public function register()
{
 $this->app->bind('App\Contracts\SomeService', 'App\Services\SomeService');
}

Dalam contoh ini, kita mengikat antarmuka ke implementasi konkret, memastikannya dapat digunakan di seluruh aplikasi.

Menggunakan boot()

public function boot()
{
 \Event::listen('event.name', function ($data) {
 // Menangani acara
 });
}

Di sini, kami mendaftarkan event listener dalam metode boot(), memastikan semua dependensi yang diperlukan tersedia.

Kesimpulan

Metode register() berfokus pada pengikatan, sedangkan metode boot() digunakan untuk menjalankan operasi yang bergantung pada layanan lain yang sudah terdaftar.

Saat mengembangkan aplikasi Laravel, menggunakan kedua metode ini dengan benar dapat meningkatkan pemeliharaan dan stabilitas kode.

Reference

All rights reserved,未經允許不得隨意轉載
Dibangun dengan Hugo
Tema Stack dirancang oleh Jimmy