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
没有第二种类型,那么一切都是正确的。
答案 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();