🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ Mahdiabedini
در مورد کلاس CouponValidator
جامعه لاراول ایجاد شده در ۲۸ دی ۱۴۰۰

سلام استاد تو کلاس 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 بار دقیق دیدم .