我有类型提示的问题。我有这样的类(伪代码):
interface iBaseDAO
{
public function __construct(iBaseDataMapper $objDataMapper);
//...
}
interface iBaseDataMapper
{
//...
}
interface iConcreteDataMapper extends iBaseDataMapper
{
//...
}
class ConcreteDAO implements iBaseDAO
{
public function __construct(iConcreteDataMapper $objDataMapper)
{
//...
}
}
我希望实现,DAO
只能使用某种DataMapper
进行实例化,但对于ConcreteDAO
,请确保仅使用ConcreteDataMapper
对其进行实例化。
由于iConcreteDataMapper
是iBaseDataMapper
的孩子,我认为它应该有用,但我收到错误:
Fatal error: Declaration of ConcreteDAO::__construct() must be compatible with iBaseDAO::__construct(iBaseDataMapper $objDataMapper)
为什么我无法在iConcreteDataMapper
中使用ConcreteDAO
?
感谢您的任何帮助。