2015-10-02 136 views
3

看看这个代码示例:PHP类型提示在派生类中

class basetype { 
    public function method() { 
     return false; 
    } 
} 

class extendtype extends basetype { 
    public function methodb() { 
     return true; 
    } 
} 

class aa { 
    /** 
    * @var basetype 
    */ 
    protected $membera; 
} 

class bb extends aa { 
    public function __constructor() { 
     $this->membera = new extendtype(); 
    } 

    public function dosomething() { 
     $this->membera->methodb(); 
    } 
} 

当内PHPStorm编辑我得到警告说:“法不方法b类基本类型找到”。我使用预先存在的代码库并且不能更改基类。那么,为了消除此警告,我该怎么办?

+0

为什么'@var basetype' $ membera变量?是的,$ membera是一种基类型,但这可能会让PHPStrorm感到困惑。只要删除它,看看你是否得到相同的错误。 –

+0

我认为你误解了保证。过去它形成了phpstorm。在一天结束时,它只是一个提示,如果你的代码工作,这并不重要。 –

+0

的可能的复制[PHPStorm型暗示基类的子类(http://stackoverflow.com/questions/32863786/phpstorm-type-hinting-subclasses-of-baseclass) – beardedlinuxgeek

回答

1

您可以覆盖你的class BB$membera并给它一个新的文档块与派生类型。

class bb extends aa { 
    /** 
    * @var extendtype 
    */ 
    protected $membera; 

    public function __constructor() { 
     $this->membera = new extendtype(); 
    } 

    public function dosomething() { 
     $this->membera->methodb(); 
    } 
}