考虑一下:
class A{}
class B extends A{}
interface I{
// expects object instanceof A
function doSomething(A $a);
}
class C implements I
{
// fails ????
function doSomething(B $b){}
}
在我的概念中,上面应该可以工作,但它不会因为 php 拒绝要求第一个参数与接口 (I) 中定义的类型 (A) 完全相同的实现。由于 B 是 A 的子类,我看不出有什么问题。我在这里错过了什么吗?