【发布时间】:2012-01-14 14:34:28
【问题描述】:
我在 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 - 我错过了什么吗?我应该如何实现这种功能?
【问题讨论】:
-
我不同意这是兼容的,您的
interface I表示method接受任何AC的合同,而不仅仅是C... 我会同意InterfaceImplementation实际上并没有实现I。