我们有一些遗留的接口代码,我希望在不破坏实现它的其他类的情况下进行扩展。我需要在其中一个接口方法中添加其他参数,以便实现接口的新类将使用,旧的将忽略它。 AFAIK,无法在不改变实现方法签名的情况下更改界面。
目前的实施:
interface inter
{
public function hey($rr);
}
class Cl implements inter
{
function hey($rr) {
echo "hey";
}
}
我想要这样的事情:
interface inter
{
public function hey($rr, $ee = true);
}
class Cl implements inter
{
function hey($rr) {
echo "hey";
}
}
我知道这会导致致命的错误 - 我希望了解这种情况是否有类似的方法或最佳做法。
谢谢, 阿龙
答案 0 :(得分:0)
我认为没有任何解决方案存在。我建议添加另一个不同名称的方法,如
interface inter
{
public function hey($rr);
public function yey($rr, $ee = true);
}
或者更好的扩展接口与另一个适用于新类的接口。
interface other_inter extends inter
{
public function yey($rr, $ee = true);
}