php界面与更严格的签名

时间:2013-09-30 14:24:31

标签: php interface

在php中我可以使用比指定的更严格的函数签名的接口实现吗?

例如:

interface iChangeHandler{
    public function update($new, $old);
    }

class NoteChangeHandler implements iChangeHandler
{
    public function update(Note $new, Note $old)
    {
    //does stuff
    }
}

作为替代方案,我可以检查类或实例,只是想知道我是否可以这样做。

1 个答案:

答案 0 :(得分:1)

不,你不能,因为实现的签名必须与声明的原型完全匹配。所以你不能使用更窄的参数限制。它实际上是RTM

  

注意:

     

实现接口的类必须使用完全相同的方法   接口中定义的签名。不这样做会导致   在一个致命的错误。