Реализация интерфейса PHP отклоняет подклассы по параметрам

рассмотрите следующее:

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 отклоняет эту реализацию, требующую, чтобы первый параметр был точно такого же типа (A), как определено в интерфейсе ( Я). Поскольку B является подклассом A, я не понимаю, в чем проблема. Мне что-то здесь не хватает?

5
задан fabio 24 January 2011 в 13:59
поделиться