Laravel Contracts Example | Contracts In Laravel In Hindi

Blogs ❯❯ Laravel

Image could not load

Laravel contracts

What are contracts in Laravel ?

Laravel Contracts PHP Interfaces का set हैं जो framework की core services को define करते हैं। ये interfaces आपको एक defined structure provide करते हैं जिससे आप अपनी implementations को framework के साथ seamlessly integrate कर सकते हैं।

Contracts का use करने का main advantage ये होता है कि आप loosely coupled code लिख सकते हैं जो easily maintainable और testable होता है।

Laravel Contract Example

एक simple example के through समझते हैं कि कैसे आप अपना custom contract और implementation बना सकते हैं।

Step 1 : Create Contract

Let's say हम एक PaymentGateway contract बनाना है। जिसे हम app/Contracts directory में बनाएंगे।

namespace App\Contracts; interface PaymentGateway { public function charge($amount); }
Step 2 : Implement Contract

चूंकि PaymentGateway Contract एक Interface है तो इसके लिए हमें एक implementation class बनानी पड़ेगी , जो PaymentGateway contract को implement करेगी। हम StripePaymentGateway service बनाएंगे , जो app/Services directory में होगी।

namespace App\Services; use App\Contracts\PaymentGateway; class StripePaymentGateway implements PaymentGateway { public function charge($amount) { // Stripe payment logic return "Charging {$amount} using Stripe."; } }
Step 3 : Register In Service Provider

अब हमें अपनी implementation को service container में register करेंगे इसके लिए हम app/Providers/AppServiceProvider::class को modify करेंगे।

namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Contracts\PaymentGateway; use App\Services\StripePaymentGateway; class AppServiceProvider extends ServiceProvider { public function register() { $this->app->bind(PaymentGateway::class, StripePaymentGateway::class); } public function boot() { // } }
Step 4 : Use Contract

अब application में PaymentGateway contract को use कर सकते हैं , Laravel automatic dependency injection का use करके appropriate implementation provide कर देगा।

namespace App\Http\Controllers; use App\Contracts\PaymentGateway; class PaymentController extends Controller { protected $paymentGateway; public function __construct(PaymentGateway $paymentGateway) { $this->paymentGateway = $paymentGateway; } public function charge($amount) { return $this->paymentGateway->charge($amount); } }
Step 5 : Define Route

use App\Http\Controllers\PaymentController; Route::get('/charge/{amount}', [PaymentController::class, 'charge']);

Laravel Contract Summary

  • Contracts : Interfaces जो core services को define करते हैं।

  • Implementation : Contract की implementation class बनाई जाती है जो actual logic handle करती है।

  • Service Provider : Implementation को service container me register किया जाता है।

  • Usage : Dependency injection का use करके contract को application में use किया जाता है।

Same इसी तरह से , Mailer भी एक contracts है और हम अपनी Mail class में build() method को implement करते हैं। जिसके through हम email send करते हैं।

Recent Blogs

Loading ...

Rahul Kumar

Rahul Kumar

Hi ! I'm Rahul Kumar Rajput founder of I'm a software developer having more than 4 years of experience. I love to talk about programming as well as writing technical tutorials and blogs that can help to others. I'm here to help you navigate the coding cosmos and turn your ideas into reality, keep coding, keep learning :)

Get connected with me. :) LinkedIn Twitter Instagram Facebook