请看下面的代码示例:

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中编辑时,我收到警告“在类basetype中找不到方法methodb”。我使用预先存在的代码基,不能更改基类。那么我该怎么做才能消除这个警告呢?

最佳答案

您可以重写$membera中的class BB,并给它一个具有派生类型的新文档块。

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

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

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

08-15 15:52