【问题标题】:How phpdoc declare return type is the caller?phpdoc如何声明返回类型是调用者?
【发布时间】:2015-12-30 09:26:27
【问题描述】:

例如:

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

class B extends A {
    var $var;
}

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

我试过@return self不行!

【问题讨论】:

  • 如果您将静态更改为公开,我们可以做到。

标签: php phpdoc


【解决方案1】:

您可以使用以下代码:

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;
}

【讨论】:

    【解决方案2】:
    class A {
        /**
         * @return static
         */
        static function model () {
            $class = static::class;
            return new $class;
        }
    }
    
    class B extends A {
        var $var;
    }
    

    你也可以试试@return $this,它可以在 PHPStorm 中工作,虽然语义上它应该只在非静态上下文中使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 2020-02-19
      • 2016-05-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多