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.
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.
Menggunakan corak suntikan kebergantungan boleh membawa banyak faedah. Berikut ialah beberapa kelebihan utama:
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.
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.
Berikut ialah beberapa amalan terbaik untuk menggunakan suntikan tanggungan:
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!