Laravel Service Provider | Service Provider In Laravel In Hindi

Other Blogs

Blogs ❯❯ Laravel

Image could not load

Laravel Service Providers

What is a Service Provider in Laravel ?

Laravel में , Service Providers application के bootstrapping का primary way है। ये वो classes हैं जो application की services को bind और register करती हैं।

Service Providers को app/Providers directory me store किया जाता है।

Laravel default service providers के साथ आता है , जो framework के different components को bootstrapped (prepare) करते हैं। आप अपने custom service providers भी बना सकते हैं।

और इस article में सीखेंगे भी कि कैसे custom service बनाते हैं।

How Service Provider Works ?

Service Providers दो primary functions perform करते हैं -

  • Service Binding : Dependencies को service container me bind करता है।

  • Service Bootstrapping : Dependencies को resolve और configure करता है।

Laravel Service Provider Example

अब हम एक custom service को खुद का service provider भी बनाएंगे।

suppose हमें किसी order के लिए payment process करना है। उसके लिए service और provider को नीचे दिए गए steps को follow करके बना सकते हैं।

Step 1 : Service Class

पहले , आपको एक service class बनानी होगी , इसे आप app/Services directory में रखेंगे।

mkdir app/Services

example के लिए , हम PaymentService class बना रहे हैं -

namespace App\Services; class PaymentService { public function processPayment($amount) { // Payment processing logic here return "Processing payment of $amount."; } }
Step 2 : Service Provider Banana

Next, आपको service provider बनाना होगा , Service provider में आप अपनी service को container के साथ register करते हैं। ताकि Laravel automatically dependency inject और resolve कर सके।

php artisan make:provider PaymentServiceProvider

इससे PaymentServiceProvider class generate होगी जो app/Providers directory में होगी , जिसमे नीचे दिया गए code रखेंगे -

namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Services\PaymentService; class PaymentServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { $this->app->singleton(PaymentService::class, function ($app) { return new PaymentService(); }); } /** * Bootstrap any application services. * * @return void */ public function boot() { // } }
Step 3 : Register Service Provider

Service provider को register करने के लिए config/app.php file में providers array में PaymentServiceProvider class को add करें।

'providers' => [ // Other Service Providers App\Providers\PaymentServiceProvider::class, ],
Step 4 : Use your custom Service

अब आप अपनी custom service और provider को application के किसी भी part में use कर सकते हैं , Example के लिए हम इसे एक controller में कुछ इस तरह से access कर सकते हैं।

namespace App\Http\Controllers; use App\Services\PaymentService; class PaymentController extends Controller { protected $paymentService; public function __construct(PaymentService $paymentService) { $this->paymentService = $paymentService; } public function process($amount) { $result = $this->paymentService->processPayment($amount); return response()->json(['message' => $result]); } }

__construct() में , laravel आपके provider के लिए automatically class को resolve करके आपको PaymentService class का object return करेगा।

आप PaymentController के process method को किसी भी route के साथ bind कर सकते हैं।

// web/routes.php use App\Http\Controllers\PaymentController; Route::get('/process-payment/{amount}', [PaymentController::class, 'process']);

Conclusion

Laravel में custom service और provider create और use करना straightforward process है। Service को create करे , service provider के through register करते हैं और फिर dependency injection का use करके service को किसी भी controller या class में inject कर सकते हैं।

Recent Blogs

Loading ...

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook

Your Thought ?

Please wait . . .

    0 Comment(s) found !