Rumah  >  Artikel  >  rangka kerja php  >  Apakah faedah penyongsangan kawalan dalam Laravel

Apakah faedah penyongsangan kawalan dalam Laravel

WBOY
WBOYasal
2022-06-08 11:15:402055semak imbas

Dalam Laravel, kelebihan penyongsangan kawalan ialah ia boleh menggunakan bekas IOC untuk memisahkan modul atau objek yang bergantung Jika perkhidmatan yang dinyatakan tidak sesuai untuk digunakan, tidak perlu mengubah suai yang ditentukan oleh pembangun Kaedah Cari perkhidmatan yang sesuai untuk diganti melalui antara muka yang ditentukan.

Apakah faedah penyongsangan kawalan dalam Laravel

Persekitaran pengendalian artikel ini: sistem Windows 10, Laravel versi 6, komputer Dell G3.

Apakah faedah kawalan penyongsangan Laravel

Laravel sendiri ialah bekas IOC, juga dipanggil bekas perkhidmatan

Bekas perkhidmatan adalah untuk mengurus kebergantungan kelas dan prestasi suntikan kebergantungan Fungsi alat

Penyongsangan Kawalan adalah untuk menyahganding modul atau objek dengan menggunakan pihak ketiga untuk menyahgandingkan modul atau objek yang bergantung, dan pihak ketiga ini ialah bekas IOC.

Bekas menyimpan perkhidmatan yang diperlukan di dalamnya untuk panggilan pembangun dengan mudah. Oleh itu, untuk memudahkan pengurusan perkhidmatan ini (melaksanakan decoupling), Laravel memutuskan untuk tidak memanggil perkhidmatan ini secara langsung Sebagai contoh, pemaju menentukan kaedah 1, yang pada asalnya terikat kepada perkhidmatan B dan dilaksanakan melalui perkhidmatan B. Sekarang ia bukan lagi B, tetapi Antara muka A ditakrifkan, dan perkhidmatan B dilaksanakan melalui antara muka A.

Dalam proses ini, perkhidmatan B boleh mengawal fungsi tertentu pembangun Sekarang pembangun tidak memanggil perkhidmatan ini secara langsung, tetapi menggantikannya dengan antara muka A. Oleh itu, perkhidmatan B tidak mempunyai kawalan ke atas fungsi ini. Hilang kawalan, dan antara muka A mendapat kawalan ke atas fungsi, proses ini dipanggil Penyongsangan Kawalan

Kelebihannya ialah :

Jika perkhidmatan B tidak lagi sesuai, maka antara muka A boleh mencari perkhidmatan lain yang sesuai dengan keperluan dan menggantikannya tanpa mengubah suai kaedah pembangun 1. Bagi perkhidmatan apa yang anda gunakan untuk antara muka A, saya tidak perlu risau tentang kaedah ini. Jika antara muka A ini ingin melaksanakan perkhidmatan B, maka kelas yang melaksanakan perkhidmatan B mesti mewarisi antara muka A ini, dan melaksanakan kaedah abstrak yang ditakrifkan oleh antara muka A dalam kelas B ini.

Antara muka A ini juga boleh dianggap sebagai penyedia perkhidmatan ini. Terdapat berbilang penyedia perkhidmatan dalam laravel, dan mereka membentuk komponen yang sepadan Berbilang komponen membentuk rangka kerja laravel

Oleh kerana terdapat antara muka A dan terdapat begitu banyak antara muka BCDE, untuk memudahkan pengurusan, adalah perlu untuk menyediakan perkhidmatan yang ditetapkan Parameter format dan kaedah pengarang digunakan untuk mengekang peraturan mereka Konsep ini dipanggil: kontrak

Kelebihan kontrak ialah selagi peraturan kekangan dipenuhi, ia boleh diganti. seperti yang diperlukan,

**Fasad,** kita boleh memanggilnya fasad, sebenarnya adalah satu set antara muka statik atau proksi yang membolehkan pembangun mengakses pelbagai perkhidmatan yang terikat pada bekas dengan mudah. Laravel disertakan dengan beberapa Fasad, seperti Cache, dsb. Fasad ialah kelas yang boleh digunakan untuk mengakses objek daripada bekas Fungsi ini ditakrifkan dalam kelas Fasad. Fasad Laravel dan mana-mana Fasad yang anda tentukan sendiri akan mewarisi kelas Fasad. Secara umumnya, penggunaan xxxx yang anda gunakan di atas kelas adalah semua fasad untuk butiran, lihat pautan: https://www.jianshu.com/p/a96715975d4e

Jadi, bagaimana jika perkhidmatan yang saya mahu. implement tidak ada di sana? Jika anda melakukannya, anda perlu mendaftar dan memulakan perkhidmatan baru Hanya apabila ia didaftarkan dalam bekas boleh memanggilnya. Kembali ke topik

Apakah suntikan pergantungan: Kaedah pembangun 1 mentakrifkan antara muka orang tengah A. Antara muka A ini boleh disimpan dalam pembina kelas 1 yang mana kaedah 1 tergolong dalam bentuk parameter Proses ini dipanggil suntikan kebergantungan.

Selagi ia tidak dihasilkan secara dalaman (seperti permulaan, melalui kaedah kilang dalam __konstruktor, atau baharu secara manual), tetapi disuntik dari luar dalam bentuk parameter atau bentuk lain, ia tergolong kepada suntikan pergantungan

Bagaimanakah kita melakukan suntikan pergantungan? Sangat mudah: $biller = StripeBiller baharu(SmsNotifier baharu);

Ini ialah suntikan pergantungan. Kelas pengebilan StripeBiller tidak perlu mempertimbangkan cara untuk memberitahu pengguna secara langsung Kami memberikannya sebagai contoh kelas pelaksanaan pemberitahuan SmsNotifier

. Dari perspektif kod, ini mungkin hanya perubahan kecil, tetapi pengenalan corak reka bentuk ini pasti akan menjadikan keseluruhan seni bina aplikasi anda kelihatan baharu: kerana sempadan tanggungjawab kelas dinyatakan dengan jelas, komunikasi antara lapisan dan perkhidmatan yang berbeza dilaksanakan. Dengan penyahgandingan, kod anda menjadi lebih mudah untuk dikekalkan di samping itu, dari perspektif pengaturcaraan berorientasikan antara muka, kod menjadi lebih mudah untuk diuji Anda hanya perlu menyuntik kebergantungan melalui simulasi, dan ujian antara kelas yang berbeza boleh diasingkan sepenuhnya

[Cadangan berkaitan: tutorial video laravel]

Atas ialah kandungan terperinci Apakah faedah penyongsangan kawalan 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