سلام
در کد زیر
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 صدا بشه باید درون این اینترفیس موجود باشه