类实现接口不能再严格限制

时间:2019-05-15 15:45:30

标签: php oop

关于接口和类,我目前正在努力地使用PHP。这就是想法...我有一些实体实现的接口:

interface ExternallyPostable
{
    public function isExternalPostingProhibited() : bool;
}
class JobOffer implements ExternallyPostable
{
    public function isExternalPostingProhibited() : bool
    {
        return false;
    }
}
class Event implements ExternallyPostable
{
    public function isExternalPostingProhibited() : bool
    {
        return true;
    }
}

对于每个实体,我都有一个类表示该特定实体的外部帖子,并且所有这些类都实现以下接口:

interface ExternalPost
{
    public function setEntity(ExternallyPostable $entity) : ExternalPost;
    public function getEntity() : ExternalPost;
}

我的问题是,这并不工作:

class JobOffer_Monster implements ExternalPost
{
    protected $entity = null;

    public function setEntity(JobOffer $entity) : JobOffer_Monster
    {
        $this->entity = $entity;

        return $this;
    }

    public function getEntity() : JobOffer_Monster
    {
        return $this->entity;
    }
}

PHP希望签名与接口之一匹配,在这种情况下,该接口太“宽”。为什么只要期望的类通过实现接口来履行合同,该类就不能对其参数和返回类型进行更严格的限制?

0 个答案:

没有答案