phpdoc如何声明返回类型是调用者


How phpdoc declare return type is the caller?

例如:

class A {
    static function model () {
        $class = static::class;
        return new $class;
    }
}
class B extends A {
    var $var;
}

我能告诉编辑器代码B::model()返回的类型B是调用者而不是其他人吗?

我试过@return self不工作!

您可以使用以下代码:

class A {
    public function model () {
        $class = static::class;
        return new $class;
    }
}
class B extends A {
    /**
     * @return B
     */
    public function model(){
        return parent::model();
    }
    var $var;
}
class A {
    /**
     * @return static
     */
    static function model () {
        $class = static::class;
        return new $class;
    }
}
class B extends A {
    var $var;
}

您也可以尝试@return $this,它将在PHPStorm中工作,尽管从语义上讲,它应该仅在非静态上下文中使用