PDA

View Full Version : حرفه ای: امکان Implement دو اینترفیس با متدهای یکسان



rasoul_par
شنبه 07 شهریور 1394, 11:54 صبح
سلام
یک سوال من داشتم و اونم اینه که آیا میشه یک کلاس رو از دو اینترفیس Implement کرد که هردو متدهای یکسانی هستن؟
مثلا:


interface a{public function foo($bar) {
//do something
}
interface b{public function foo() {
//do something
}
class c implements a, b{
public function foo($bar, $bar2) {
// do something
}
}

arenaw
شنبه 07 شهریور 1394, 14:22 عصر
سلام.
شما میتونید خود اینترفیس‌ها رو از یک اینترفیس پدر مشتق بگیرید. ولی به هر حال نباید کلاسی که از اینترفیس تبعیت میکنه، فانکشن‌هاش ورودی‌های بیشتر یا کمتری بگیره. (توی خط 8، شما فانکشن foo کلاس رو با ۲ پارامتر تعریف کردید در صورتی که توی اینترفیس‌ها، اینطوری نیست)


interface p{
public function foo();}
interface a extends p{ public function bar1();
}
interface b extends p{
public function bar2();
}
class c implements a, b{
public function foo() {
// do something
}
public function bar1() {
// do something
}
public function bar2() {
// do something
}
}

rasoul_par
یک شنبه 08 شهریور 1394, 11:56 صبح
توی php آرگومان ها مشخصه متد نیستن (برخلاف زبان هایی مثل C# یا Java) واسه همین میشه تعداد آرگومان ها متغییر باشه!
من جواب سوالم رو گرفتم، از php 5.4 به بعد این امکان وجود داره اما قبل از اون نه!