Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHP untuk suntikan pergantungan

Cara menggunakan PHP untuk suntikan pergantungan

PHPz
PHPzasal
2023-06-06 22:01:022540semak imbas

Dengan pembangunan kejuruteraan perisian, semakin ramai pembangun menumpukan pada penulisan aplikasi yang mudah diselenggara dan berskala. Antaranya, suntikan kebergantungan (Dependency Injection) adalah corak yang sangat penting, yang boleh mencapai kebolehujian, kebolehorganisasian dan kebolehskalaan dalam aplikasi. Sebagai bahasa pengaturcaraan yang terkenal, PHP juga mempunyai bekas suntikan kebergantungan sendiri dan perpustakaan berkaitan Pembangun boleh menggunakan alat ini untuk melaksanakan suntikan kebergantungan. Artikel ini akan memperkenalkan cara menggunakan PHP untuk suntikan pergantungan.

  1. Apakah suntikan kebergantungan (DI)

Sebelum kita mula memperkenalkan suntikan kebergantungan dalam PHP, mari kita fahami dahulu apa itu suntikan kebergantungan. Suntikan ketergantungan ialah corak reka bentuk perisian yang membolehkan kelas (atau fungsi) tidak lagi bergantung secara langsung pada objek yang diperlukan, tetapi disalurkan dari luar. Corak ini menjadikan kod lebih fleksibel dan berskala kerana kebergantungan dialihkan ke bekas luaran yang mengandungi semua kebergantungan, dipanggil bekas suntikan kebergantungan.

Dalam corak suntikan kebergantungan, kami menyuntik kebergantungan melalui pembina atau kaedah Setter, yang boleh menjadi objek lain, tika antara muka atau nilai skalar. Kebergantungan boleh menjadi objek atau nilai mudah, dan klien suntikan kebergantungan memperoleh kebergantungan ini dengan menghantarnya sebagai parameter kepada bekas perkhidmatan atau dengan menyuntiknya ke dalam kaedah penetap dalam objek.

  1. Faedah Suntikan Ketergantungan

Menggunakan corak suntikan kebergantungan boleh membawa banyak faedah. Berikut ialah beberapa kelebihan utama:

  • Kebolehujian: Suntikan kebergantungan boleh membantu kami melakukan ujian unit dengan lebih mudah kerana kami boleh menyediakan pelaksanaan olok-olok baharu atau objek olok-olok untuk kebergantungan.
  • Fleksibiliti: Kebergantungan antara komponen aplikasi adalah lebih fleksibel kerana kita boleh mengubah gelagat aplikasi atau komponen dengan menyuntik kebergantungan.
  • Guna Semula Kod: Memandangkan kebergantungan dialihkan ke dalam bekas, kami boleh menggunakan semula kebergantungan dalam komponen yang berbeza.
  • Penyahgandingan kelas: Mod suntikan ketergantungan memisahkan kebergantungan antara kelas. Ini menjadikan kod lebih mudah untuk diselenggara dan mengurangkan risiko pengubahsuaian kod.
  1. Bekas Suntikan Ketergantungan PHP

Apabila menggunakan suntikan dependensi dalam PHP, kita perlu menggunakan bekas suntikan dependensi. Bekas suntikan kebergantungan ialah objek yang membantu kami menyelesaikan kebergantungan pada masa jalan. Biasanya, bekas suntikan tanggungan terdiri daripada dua bahagian: mendaftar tanggungan dan menyelesaikan tanggungan.

Mendaftar kebergantungan ialah mendaftarkan kelas atau antara muka ke dalam bekas supaya ia boleh diambil semula. Apabila kelas atau objek perlu bergantung pada objek lain, ia boleh mendapatkannya daripada bekas. Bekas suntikan ketergantungan juga boleh menyelesaikan kebergantungan secara automatik, yang diperlukan apabila menggunakan bekas.

Kini, kami akan menggunakan pakej Kontena Liga PHP sebagai bekas suntikan pergantungan kami. PHP League Container ialah bekas suntikan pergantungan ringan yang menyokong resolusi pergantungan automatik dan pendaftaran kelas luaran.

Perhatikan bahawa kod berikut menunjukkan kaedah mendaftarkan kelas ke dalam bekas:

use LeagueContainerContainer;

$container = new Container;

$container->add('className', 'NamespaceClassName');

Kami menggunakan kaedah add() untuk memetakan instantiasi nama kelas 'className' sepenuhnya nama yang layak bagi kelas 'NamespaceClassName'. Apabila kontena perlu menyelesaikan kebergantungan kelas tertentu, ia akan menggunakan API pantulan untuk mendapatkan parameter kelas dan membina semulanya menjadi contoh.

  1. Contoh Suntikan Kebergantungan

Mari kita fahami cara menggunakan suntikan kebergantungan untuk menyuntik kebergantungan EmailSender melalui contoh mudah.

interface EmailSenderInterface {
    public function sendEmail($to, $message);
}

class EmailSender implements EmailSenderInterface {
    public function sendEmail($to, $message) {
        return mail($to, "An email", $message);
    }
}

class User {
    protected $emailSender;

    public function __construct(EmailSenderInterface $emailSender) {
        $this->emailSender = $emailSender;
    }

    public function sendWelcomeEmail($email) {
        $this->emailSender->sendEmail($email, "Welcome to my site!");
    }
}

Dalam kod di atas, kami mentakrifkan satu set kelas. Kelas EmailSender mewakili penghantar e-mel dan kelas User digunakan untuk menghantar e-mel alu-aluan. Kelas User perlu mendapatkan contoh __construct melalui kaedah EmailSender untuk menghantar e-mel alu-aluan.

Sekarang, kita perlu menyuntik contoh EmailSender sebagai kebergantungan ke dalam kelas User.

use LeagueContainerContainer;

$container = new Container;

$container->add('EmailSender', 'EmailSender');

$user = $container->get('User', ['EmailSender']);

Dalam kod di atas, kami mendaftarkan kelas EmailSender dan melengkapkan instantiasi dalam bekas. Seterusnya, kami membuat instantiate kelas User dan menyuntik objek EmailSender untuk menghantar e-mel.

  1. Amalan terbaik untuk menggunakan suntikan tanggungan

Berikut ialah beberapa amalan terbaik untuk menggunakan suntikan tanggungan:

  • Tulis kod yang boleh diuji: Menyuntik kebergantungan ke dalam kaedah menjadikannya lebih mudah dikawal dan membolehkan ujian unit.
  • Daftar kelas luaran: Jika anda menggunakan perpustakaan pihak ketiga atau kelas luaran lain, daftarkannya dengan bekas supaya ia boleh disuntik ke dalam kelas apabila diperlukan.
  • Kurangkan kebergantungan: Kurangkan bilangan kebergantungan sebanyak mungkin, yang boleh menjadikan kod lebih ringkas dan lebih mudah diselenggara.
  • Elak kebergantungan bulat: Mengelakkan kebergantungan bulat boleh menjadi sangat penting. Ini boleh diselesaikan dengan menggunakan kaedah Setter, bekas tidak akan menyelesaikan kebergantungan bulat secara automatik.
  1. Kesimpulan

Suntikan kebergantungan ialah corak berguna yang memudahkan untuk mengurus dan mengekalkan kod anda. Menggunakan suntikan kebergantungan dalam PHP biasanya bermaksud menggunakan bekas suntikan kebergantungan, dan disyorkan untuk menggunakan Bekas Liga PHP untuk pembangunan. Kami menunjukkan melalui kod contoh cara mendaftar kelas dan cara menyuntik kebergantungan. Dengan menggunakan suntikan pergantungan, aplikasi anda akan menjadi lebih cekap, lebih mudah diselenggara dan lebih mudah untuk dilanjutkan.

Atas ialah kandungan terperinci Cara menggunakan PHP untuk suntikan pergantungan. 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