Laravel Service Provider
Service Provider (সার্ভিস প্রোভাইডার) Laravel অ্যাপ্লিকেশনের বুটস্ট্র্যাপিং এবং কনফিগারেশনের মূল কেন্দ্র। এটি Laravel-এর সবচেয়ে শক্তিশালী ফিচারগুলোর মধ্যে একটি যা অ্যাপ্লিকেশনের বিভিন্ন কম্পোনেন্টস রেজিস্টার এবং ইনিশিয়ালাইজ করে।
সার্ভিস প্রোভাইডার কি?
Service Provider হলো PHP ক্লাস যা:
অ্যাপ্লিকেশন সেবা রেজিস্টার করে
কন্টেইনার বাইন্ডিং সেটআপ করে
রাউটস, ইভেন্টস, মিডলওয়্যার কনফিগার করে
ডিপেন্ডেন্সি ইনজেকশন ম্যানেজ করে
কেন এটি গুরুত্বপূর্ণ?
মডুলারিটি: প্রতিটি ফিচার আলাদাভাবে ম্যানেজ করা যায়
লেইজি লোডিং: শুধু প্রয়োজনীয় সার্ভিস লোড হয়
কনফিগারেশন: কেন্দ্রীয়ভাবে সবকিছু কন্ট্রোল করা যায়
বেসিক স্ট্রাকচার
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ExampleServiceProvider extends ServiceProvider
{
public function register()
{
// সার্ভিস রেজিস্ট্রেশন
}
public function boot()
{
// বুটিং লজিক
}
}প্রোভাইডার টাইপস
১. কোর প্রোভাইডার
// AppServiceProvider.php public function register() { $this->app->singleton(Interface::class, Implementation::class); }
২. ডিফার্ড প্রোভাইডার
// config/app.php 'providers' => [ App\Providers\CustomServiceProvider::class, ],
৩. প্যাকেজ প্রোভাইডার
class PackageServiceProvider extends ServiceProvider { public function register() { $this->mergeConfigFrom(__DIR__.'/../config.php', 'package'); } }
রেজিস্ট্রেশন প্রক্রিয়া
config/app.php-এ প্রোভাইডার লিস্ট করা হয়
অ্যাপ্লিকেশন বুটস্ট্রাপিং সময় প্রোভাইডার লোড হয়
register()মেথড কল হয় (সকল প্রোভাইডারের)boot()মেথড কল হয় (রেজিস্ট্রেশন পর)
বাস্তব উদাহরণ
ডাটাবেস কনফিগারেশন
// AppServiceProvider.php public function boot() { Model::preventLazyLoading(! $this->app->isProduction()); }
ভিউ কম্পোজার
public function boot() { View::composer('profile', ProfileComposer::class); }
প্রোভাইডার তৈরি
php artisan make:provider CustomServiceProvider
// CustomServiceProvider.php public function register() { $this->app->bind(PaymentGateway::class, function ($app) { return new StripePayment(config('services.stripe.key')); }); }
গুরুত্বপূর্ণ মেথডসমূহ
| মেথড | বিবরণ |
|---|---|
register() | সার্ভিস রেজিস্ট্রেশন (কোন রুট/কন্ট্রোলার এক্সেস করবেন না) |
boot() | সকল রেজিস্ট্রেশন সম্পূর্ণ হওয়ার পর কল হয় (রুট/কন্ট্রোলার এক্সেস করুন) |
বেস্ট প্র্যাকটিস
register()-এ হেভি লজিক এড়িয়ে চলুনইন্টারফেস বাইন্ডিং ব্যবহার করুন
প্রোভাইডারকে থিন রাখুন
ডিফার্ড প্রোভাইডার ব্যবহার করুন
Service Provider Laravel-এর হার্টবিট, যা অ্যাপ্লিকেশনের সকল কম্পোনেন্টসকে সংগঠিতভাবে কাজ করতে সাহায্য করে।
No comments