If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
अगर आप Laravel use करते हैं तो आपने documentation में एक word जरूर सुना होगा : Service Container
. इस word का मतलब क्या है और क्या impact है इसका सब कुछ जानेंगे इस article में।
Laravel में service container एक powerful tool है जो dependency injection को handle करता है और classes को resolve करता है। ये एक central place है जहाँ dependencies को manage और inject
किया जाता है।
●●●
Dependency Injection (DI
) एक design pattern है जो Inversion of Control (IoC
)
को implement करता है। ये pattern dependencies dependencies को खुद से create करने के वजाय class को अपनी dependencies बाहर से लेने के लिए allow करता है।
Laravel में Dependency Injection का use class dependencies और loose coupling achieve करने के लिए extensively use होता है।
Learn more about Dependency Injection ...
●●●
Well , इसके दो main operations होते है -
Binding
: पहले , आपको service container को बताना है कि कौन सी class किस dependency को resolve करेगी। जिसे binding कहते है।
Resolving
: जब आपको किसी class का instance चाहिए होता है तब service container उस class को resolve करता है और उसकी dependencies को inject करता है।
●●●
आप एक service provider में किसी class की binding करते हैं , Service provider के register()
method में bindings define करते हैं।
suppose हमारे पास App\Services
directory में PaymentGateway
एक interface है और StripePaymentGateway
class है जो PaymentGateway interface को implement
करती है। इसकी binding कुछ इस तरह से करेंगे।
हम predefined AppServiceProvider
का use कर रहे हैं जो App\Providers
directory होता है , हालाँकि आप चाहे तो custom provider बनाकर भी binding कर सकते हैं।
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Services\PaymentGateway;
use App\Services\StripePaymentGateway;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->bind(PaymentGateway::class, StripePaymentGateway::class);
}
}
Example में PaymentGateway
interface को StripePaymentGateway
class से bind किया गया है।
●●●
Provider में class bind होने के बाद Laravel automatically resolve
करता है जब हम controller में dependency type-hint करते हैं।
namespace App\Http\Controllers;
use App\Services\PaymentGateway;
class PaymentController extends Controller
{
protected $paymentGateway;
public function __construct(PaymentGateway $paymentGateway)
{
$this->paymentGateway = $paymentGateway;
}
public function process()
{
$this->paymentGateway->charge();
}
}
यहां Controller में Laravel container automatically StripePaymentGateway
instance को inject कर देगा।
●●●
Laravel में service container एक powerful dependency injection tool है जो हमारे code को modular, reusable, और testable बनाता है। ये dependencies को manage करता है और classes को easily resolve करने में help करता है।
Service container के साथ हम अपने application में complex dependencies को आसानी से manage कर सकते हैं।
●●●
Loading ...