🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ mohammad dadkhah
AbstractCouponValidator.php
mreza حل شده توسط mreza

سلام

 در کد زیر

abstract class AbstractCouponValidator implements couponValidatorInterface
{
    private $nextValidator;
    public function setNextValidator(couponValidatorInterface  $Validator )
    {
        $this->nextValidator=$Validator;
    }
    public function validate(coupon $coupon)
    {
      if ($this->nextValidator ==null){
          return true;
      }
      return $this->nextValidator->validate($coupon);
    }
}

در بخش

 return $this->nextValidator->validate($coupon);

متود 

validate

که این جا  صدا زده شده است

کجا تعریف شده است؟

دقت کنید که متد validate روی یک نمونه از اینترفیس couponValidatorInterface  صدا زده شده پس این متد باید درون همین اینترفیس قرار داشته باشه.

 

در واقع اتفاقی که افتاده به شکل زیر هست:

ابتدا یک متغیر از نوع پرایوت به نام nextValidator ایجاد شده

سپس در متد setNextValidator این متغیر برابر با نمونه‌ای از اینترفیس couponValidatorInterface  قرار گرفته

پس هر متدی که روی nextValidator صدا بشه باید درون این اینترفیس موجود باشه

بهترین پاسخ
mreza ۱۸ شهریور ۱۴۰۰، ۰۷:۱۱