- پنجشنبه 21 آبان 1405 ساعت 21:35
- 5.6.29
- کامل شده
- منقضی شده
این داکیومنت از طرف توسعهدهنده ساپورت نمیشود، جدیدترین ورژن داکیومنت بزودی ترجمه خواهد شد.
Contracts در Laravel مجموعهای از Interfaceها هستند که رفتار مورد انتظار سرویسهای اصلی فریمورک را تعریف میکنند. یک Contract مشخص میکند یک سرویس چه عملیاتی باید ارائه کند، بدون آنکه مصرفکننده به کلاس پیادهسازی خاص وابسته شود.
نحوه کار و کاربرد
با Type-hint کردن یک Interface در سازنده، کلاس مصرفکننده فقط به قرارداد وابسته میماند. سپس Service Container پیادهسازی مناسب را به آن متصل میکند. این روش تعویض پیادهسازی، Mock کردن وابستگیها و آزمون واحد را آسانتر میکند.
نمونه
interface PaymentGateway {
public function charge($amount, array $options = array());
}
class CheckoutService {
public function __construct(PaymentGateway $gateway) { $this->gateway = $gateway; }
}
نکته
Interface باید قرارداد پایدار و معنادار تعریف کند و رفتار مورد انتظار پیادهسازیها را روشن سازد.