سلام استاد تو کلاس CouponValidator
namespace App\\Support\\Discount\\Coupon;
use App\\Models\\Coupon;
use App\\Support\\Discount\\Coupon\\Validator\\CanUseIt;
use App\\Support\\Discount\\Coupon\\Validator\\IsExpired;
class CouponValidator
{
public function isValid(Coupon $coupon)
{
$isExpired=resolve( IsExpired::class);
$canUseIt=resolve( CanUseIt::class);
$isExpired->setNextValidator($canUseIt);
return $isExpired->validate($coupon);//--------------------
}
}
نباید به این شکل بنویسیم
namespace App\\Support\\Discount\\Coupon;
use App\\Models\\Coupon;
use App\\Support\\Discount\\Coupon\\Validator\\CanUseIt;
use App\\Support\\Discount\\Coupon\\Validator\\IsExpired;
class CouponValidator
{
public function isValid(Coupon $coupon)
{
$isExpired=resolve( IsExpired::class);
$canUseIt=resolve( CanUseIt::class);
$isExpired->setNextValidator($canUseIt);
return $canUseIt->validate($coupon); ///-----------------
}
}
(جایی که کامنت گذاشتم منظورم هستش) .
فقط باید اولین کلاس که resolve کردیم ( منظورم IsExpired هستش ) را return کنیم . این قسمت را من دقیقا متوجه نشدم فیلم را هم 2 بار دقیق دیدم .