Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk membuat bekas perkhidmatan dalam laravel

Bagaimana untuk membuat bekas perkhidmatan dalam laravel

WBOY
WBOYasal
2023-05-29 10:16:07743semak imbas

Laravel ialah rangka kerja pembangunan web PHP yang popular, dan bekas perkhidmatannya ialah salah satu konsep terpentingnya. Bekas perkhidmatan menjadikan aplikasi Laravel lebih mudah untuk skala dan penyelenggaraan. Artikel ini akan menerangkan cara membuat dan menggunakan bekas perkhidmatan dalam Laravel, dan cara menggunakannya dalam kod.

Pengenalan kepada bekas perkhidmatan

Bekas perkhidmatan ialah salah satu komponen teras Laravel Ia bertanggungjawab untuk mengurus kebergantungan dan instantiasi semua kelas dalam aplikasi. Dalam Laravel, bekas perkhidmatan menggunakan corak bekas kawalan terbalik untuk mengurus objek dan kebergantungan di antara mereka. Apabila aplikasi meminta kelas, bekas perkhidmatan menyemak pembina kelas dan memuatkan objek operasi yang diperlukan berdasarkan keperluan ini.

Bekas perkhidmatan boleh berfungsi dengan hampir semua objek, termasuk pengawal, model, paparan, permintaan dan respons serta banyak lagi. Dalam aplikasi Laravel, bekas perkhidmatan boleh menggunakan suntikan kebergantungan untuk menyelesaikan kebergantungan antara kelas. Apabila anda perlu menggunakan kelas untuk mengendalikan tugas, bekas perkhidmatan secara automatik akan menyemak pembina kelas dan secara automatik mencipta kebergantungan yang diperlukannya.

Mengapa menggunakan bekas perkhidmatan?

Bekas perkhidmatan sangat penting dalam aplikasi moden kerana ia membolehkan anda mengurus kebergantungan antara kelas dengan lebih mudah dan meningkatkan fleksibiliti dan kebolehselenggaraan kod. Jika terdapat berbilang kelas dalam aplikasi anda, dan sebahagian daripadanya bergantung pada kelas lain, bekas perkhidmatan boleh menyelesaikan pergantungan ini secara automatik, menjadikan kod anda lebih modular dan boleh diuji.

Tanpa bekas perkhidmatan, anda mungkin perlu membuat instantiate kelas dan objek secara manual di sesetengah tempat dan menghantarnya ke kelas lain yang memerlukan kebergantungan. Masalah dengan ini ialah anda akhirnya mendapati bahawa kod anda menjadi agak longgar dan sukar untuk dikekalkan dan diuji. Bekas perkhidmatan boleh membantu anda mengelakkan situasi ini.

Penciptaan bekas perkhidmatan

Dalam Laravel, mencipta bekas perkhidmatan ialah proses yang agak mudah. Secara lalai, bekas perkhidmatan dalam aplikasi Laravel diprakonfigurasikan. Apabila anda mencipta aplikasi Laravel baharu, anda boleh menambah pembekal perkhidmatan anda sendiri pada bekas perkhidmatan rangka kerja Laravel.

Pembekal perkhidmatan ialah jenis kelas khas yang menambahkan satu atau lebih perkhidmatan pada bekas perkhidmatan. Setiap pembekal perkhidmatan mempunyai dua kaedah yang mesti dilaksanakan: register() dan boot().

kaedah register() digunakan untuk mengkonfigurasi bekas perkhidmatan. Dalam kaedah ini, anda boleh mendaftar perkhidmatan dengan Laravel atau perkhidmatan anda sendiri dan kemudian menggunakannya di tempat lain dalam aplikasi.

Kaedah but() adalah pilihan. Dalam kaedah ini, anda boleh melakukan konfigurasi global aplikasi Laravel, seperti mendaftarkan laluan, mendaftarkan acara dan pendengar, dsb.

Mari kita lihat contoh mudah. Katakan kita mempunyai kelas perkhidmatan yang dipanggil UserService yang bergantung pada kelas repositori yang dipanggil UserRepository. Kami perlu mendaftarkan UserService dan UserRepository ke dalam bekas perkhidmatan Laravel dan menggunakannya dalam kod kami menggunakan suntikan kebergantungan.

Pertama, kita perlu mencipta kelas pembekal perkhidmatan untuk UserService dan UserRepository. Buat kelas bernama UserServiceServiceProvider dalam direktori app/Providers, yang mewarisi ServiceProvide.

ruang nama AppProviders;
gunakan IlluminateSupportServiceProvider;
gunakan AppRepositoriesUserRepository;
gunakan AppServicesUserService;

Extended Service

public function register() 
{ 
    $this->app->bind(UserService::class, function ($app) {                 
        return new UserService($app->make(UserRepository::class)); }); 

    $this->app->bind(UserRepository::class, function ($app) {                 
        return new UserRepository(); }); 
} 

}

Seterusnya, tambahkan pembekal perkhidmatan kami pada tatasusunan penyedia dalam fail config/app.php.

'providers' => [

AppProvidersUserServiceServiceProvider::class,

]

Baiklah, pembekal perkhidmatan sudah lengkap. Kini kami boleh menggunakan UserService dan UserRepository dalam kod kami. Contohnya, gunakan UserService dalam pengawal untuk mendapatkan data pengguna:

namespace AppHttpControllers;
gunakan AppServicesUserService;

class UserController extends Controller

{

protected $userService;

public function __construct(UserService $userService)
{
    $this->userService = $userService;
} 

public function index()
{
    $users = $this->userService->getAllUsers();
    return view('users.index', compact('users'));
}

}

Dalam kod di atas, kami menyuntik UserService ke dalam UserController, dan dalam kaedah index()nya, dapatkan semua data pengguna melalui UserService dan hantarkannya ke paparan.

Ringkasan

Dalam aplikasi moden, bekas perkhidmatan ialah ciri penting. Ia boleh membantu kami mengurus kebergantungan antara kelas dengan lebih baik dan meningkatkan fleksibiliti dan kebolehselenggaraan kod. Dalam artikel ini, kami membincangkan cara membuat dan menggunakan bekas perkhidmatan dalam aplikasi Laravel. Pada masa yang sama, saya harap anda dapat memahami bekas perkhidmatan dan cara menggunakannya dalam rangka kerja Laravel supaya anda lebih selesa dan selesa dalam proses pembinaan aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk membuat bekas perkhidmatan dalam 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