Sebagai contoh, saya mencipta Perkhidmatan direktori baharu di bawah direktori APP, dan meletakkan perkhidmatan untuk menghantar e-mel, EmailService.php, di dalamnya Apabila saya ingin memanggilnya dalam pengawal lain, saya boleh terus memetik:
use App\Services\EmailService;
Dengan cara ini anda boleh menggunakannya seperti biasa.
Maka persoalannya ialah:
1 Jika ia boleh digunakan seperti di atas, dalam keadaan apakah 服务
放到服务提供者
里面去?
2、服务提供者
、服务容器
之间的关系一直搞不太清楚,究竟服务
是放到服务容器
里面还是服务提供者
里面?服务提供者
和服务容器
2. Hubungan antara pembekal perkhidmatan
dan bekas perkhidmatan
tidak pernah jelas Adakah service
diletakkan dalam bekas perkhidmatan
Di dalam atau Pembekal Perkhidmatan
? Apakah tanggungjawab masing-masing Pembekal Perkhidmatan
dan Bekas Perkhidmatan
?
dalam
服务提供者
把服务
放进服务容器
.Satu lagi pengenalan kepada bekas suntikan kebergantungan: Belajar Berhenti Pendawaian dan Sayangi Bekas Laravel
Penyoal akan bertanya soalan ini Saya rasa penyoal masih tidak tahu banyak tentang suntikan ketergantungan dan bekas perkhidmatan laravel. (Sudah tentu, saya tidak memahaminya dengan baik. Berikut adalah pemahaman mudah saya)
Jika anda menentukan secara langsung kelas di bawah ruang nama tertentu di dalam pengawal anda (kelas ini mestilah pelaksanaan antara muka (kontrak)), maka kelas ini akan digabungkan dengan pengawal. Apabila anda ingin mengubah suai kelas pelaksanaan ini, anda perlu mengubah suai pengawal dan kaedah yang dipanggil dalam pengawal.
Jika anda menulisnya dalam pembekal perkhidmatan, pertama, ia boleh dipisahkan (parameter kaedah pengawal disuntik ke dalam kelas pelaksanaan perkhidmatan melalui petunjuk jenis), dan kedua, jika perkhidmatan itu juga bergantung pada perkhidmatan lain, perkhidmatan laravel bekas mengendalikan kebergantungan ini secara automatik. Daripada menggunakan sekumpulan sintaks penggunaan di hadapan pengawal untuk mengimport sendiri perpustakaan bergantung ini. Ketiga, antara muka mengehadkan perkhidmatan untuk hanya menyediakan kaedah yang sepatutnya disediakan (tanggungjawab tunggal).
Pemahaman asas, sila tunjuk di ruangan komen jika ada kesilapan.
Bekas perkhidmatan dan pembekal perkhidmatan adalah dua perkara yang berbeza, tanpa sebarang perhubungan wajib, jadi saya akan membincangkannya secara berasingan di bawah.
Bekas perkhidmatan:
ialah pembolehubah tatasusunan bersekutu global, yang menyimpan benda di dalamnya, dan kemudian objek itu boleh diambil mengikut nama di mana-mana sahaja.
Pembekal perkhidmatan:
Dalam setiap pembekal perkhidmatan, terdapat sekeping kod permulaan yang akan digunakan oleh keseluruhan program, seperti
Kita dapat lihat daripada contoh di atas bahawa kita sentiasa perlu menulis kod permulaan ini. Cuma Laravel mentakrifkannya sebagai spesifikasi, memaksa anda untuk mengklasifikasikan dan menyimpan kod permulaan. (Anda masih boleh meletakkan pelbagai jenis kod permulaan kesemuanya dalam
app/Providers/AppServiceProvider.php
)Tolong betulkan saya.