在php中我可以使用比指定的更严格的函数签名的接口实现吗?
例如:
interface iChangeHandler{
public function update($new, $old);
}
class NoteChangeHandler implements iChangeHandler
{
public function update(Note $new, Note $old)
{
//does stuff
}
}
作为替代方案,我可以检查类或实例,只是想知道我是否可以这样做。
答案 0 :(得分:1)
不,你不能,因为实现的签名必须与声明的原型完全匹配。所以你不能使用更窄的参数限制。它实际上是RTM:
注意:
实现接口的类必须使用完全相同的方法 接口中定义的签名。不这样做会导致 在一个致命的错误。