Kami akan bermula dengan gambaran keseluruhan kontena perkhidmatan, diikuti dengan panduan komprehensif untuk membina penyedia perkhidmatan tersuai dan mengintegrasikannya ke dalam aplikasi Laravel anda. Kami juga akan mengkaji kaedah
dan register
yang penting. boot
Memahami Bekas Perkhidmatan dan Penyedia Perkhidmatan
Bekas perkhidmatan Laravel bertindak sebagai repositori pusat untuk komponen aplikasi, menguruskan kebergantungan dan memudahkan suntikan ketergantungan. Sebagai dokumentasi rasmi menyatakan, ia adalah alat yang berkuasa untuk menguruskan kebergantungan kelas dan melakukan suntikan ketergantungan. Ini menghapuskan instantiasi manual dan mengurangkan gandingan ketat dalam kod anda.Pertimbangkan contoh ini:
class SomeClass { public function __construct(FooBar $foobarObject) { // use $foobarObject object } }
disuntik secara automatik dari bekas perkhidmatan. FooBar
Mewujudkan pembekal perkhidmatan tersuai
Mari buat pembekal perkhidmatan tersuai. Pertama, menjana pembekal menggunakan Artisan:
php artisan make:provider EnvatoCustom
. Kaedah app/Providers/EnvatoCustomServiceProvider.php
adalah di mana anda mengikat kelas ke bekas. Arahan register
dalam providers
perlu mengemas kini untuk mendaftarkan pembekal anda: config/app.php
App\Providers\EnvatoCustomServiceProvider::class,
. boot
kaedah dan boot
register
Contoh dunia sebenar: Perkhidmatan Pengesahan
mari kita membina perkhidmatan pengesahan dengan pelbagai penyesuai (JSON dan XML, sebagai contoh). Ini mempamerkan kuasa penyedia perkhidmatan.
Buat antara muka:
:app/Library/Services/Contracts/AuthenticationServiceInterface.php
<?php namespace App\Library\Services\Contracts; interface AuthenticationServiceInterface { public function authenticate($credentials); }
JsonAuthentication
app/Library/Services/JsonAuthentication.php
<?php namespace App\Library\Services; use App\Library\Services\Contracts\AuthenticationServiceInterface; class JsonAuthentication implements AuthenticationServiceInterface { public function authenticate($jsonData) { // Parse $jsonData and authenticate... return 'JSON based Authentication'; } }
EnvatoCustomServiceProvider.php
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Library\Services\JsonAuthentication; class EnvatoCustomServiceProvider extends ServiceProvider { public function register() { $this->app->bind('App\Library\Services\Contracts\AuthenticationServiceInterface', function ($app) { return new JsonAuthentication(); }); } public function boot() { // ... } }
Kaedah boot
sering digunakan untuk tugas -tugas seperti mendaftarkan pendengar acara atau melihat komposer. Sebagai contoh, menambah komposer paparan:
class SomeClass { public function __construct(FooBar $foobarObject) { // use $foobarObject object } }
atau mendefinisikan pengikatan model:
php artisan make:provider EnvatoCustom
Kesimpulan
Artikel ini meliputi bekas perkhidmatan dan penyedia perkhidmatan Laravel, membimbing anda melalui membuat dan mendaftarkan penyedia tersuai, dan menunjukkan aplikasi praktikal dengan contoh dunia nyata. Ingatlah untuk berunding dengan dokumentasi Laravel rasmi untuk butiran lanjut dan teknik lanjutan.
Atas ialah kandungan terperinci Cara mendaftar dan menggunakan penyedia perkhidmatan Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!