键入提示子界面

时间:2013-07-31 03:44:17

标签: interface parent-child php type-hinting

我有类型提示的问题。我有这样的类(伪代码):

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对其进行实例化。 由于iConcreteDataMapperiBaseDataMapper的孩子,我认为它应该有用,但我收到错误:

Fatal error: Declaration of ConcreteDAO::__construct() must be compatible with iBaseDAO::__construct(iBaseDataMapper $objDataMapper)

为什么我无法在iConcreteDataMapper中使用ConcreteDAO? 感谢您的任何帮助。

0 个答案:

没有答案