如何在PHP中扩展接口并保持向后兼容性?

时间:2015-03-03 07:35:20

标签: php design-patterns interface

我们有一些遗留的接口代码,我希望在不破坏实现它的其他类的情况下进行扩展。我需要在其中一个接口方法中添加其他参数,以便实现接口的新类将使用,旧的将忽略它。 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";
    }
}

我知道这会导致致命的错误 - 我希望了解这种情况是否有类似的方法或最佳做法。

谢谢, 阿龙

1 个答案:

答案 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);  
}