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 contracts
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 होता है।
●●●
एक simple example के through समझते हैं कि कैसे आप अपना custom contract
और implementation बना सकते हैं।
Let's say हम एक PaymentGateway
contract बनाना है। जिसे हम app/Contracts
directory में बनाएंगे।
namespace App\Contracts;
interface PaymentGateway
{
public function charge($amount);
}
चूंकि 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.";
}
}
अब हमें अपनी 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()
{
//
}
}
अब 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);
}
}
use App\Http\Controllers\PaymentController;
Route::get('/charge/{amount}', [PaymentController::class, 'charge']);
●●●
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 करते हैं।
●●●
Loading ...