如何告诉PHP Storm该函数返回静态或其他类型

时间:2015-06-24 20:08:11

标签: php phpstorm phpdoc

class A {
    /**
     * @return static|bool
     */
    public static function build()
    {
         if (/**/) {
             return new static;
         }

         return false;
    }
}

class B extends A {}

$o = B::build();

PHP Storm不明白$ o中有B实例。 如果我只在static注释中留下return没有第二种类型,那么一切都是正确的。

2 个答案:

答案 0 :(得分:3)

目前,PhpStorm无法正确理解@return static|bool - 目前只有@return static正在运作。

https://youtrack.jetbrains.com/issue/WI-23435 - 观看此相关票证(星级/投票/评论)以获得进展通知。

部分解决方法:通过inlline PHPDoc键入提示变量(在您的情况下为$o),例如

/** @var B $o */
$o = B::build();

答案 1 :(得分:0)

一种解决方法,不是很优雅:

 class A {
     protected $class_name;
     public static function build()
     {
          return $class_name::static_variable;
     }
}

 class B extends A {
      protected $class_name="B";
 }

$o = B::build();
相关问题