我对PHP OOP和类型提示有奇怪的问题。这里有一个例子:PHP OOP“实现必须兼容”
abstract class AC {}
class C extends AC {}
interface I {
function method(AC $abstract);
}
class InterfaceImplementation implements I {
function method(C $concrete) {}
}
此代码将无法运行,说method
不与接口声明兼容。我认为它是兼容的,因为C扩展AC - 我想念什么?我如何期望实现这种功能?
我不同意这是兼容的,你的'接口I'表示一个契约'方法'接受_any_'AC',而不仅仅是'C' ......我会同意'InterfaceImplementation'事实上不是实施'我'。 – Wrikken 2012-01-14 14:37:28