PhpDoc在类中包含的文件中添加self的注释


PhpDoc adding notation for self in a file included inside a class

我有一个类,它包含一个如下方法中的文件:

class.php文件中:

class A {
const CONST1 = 5;
/** @var int $a */
var $a = 5;
public function call()
{
    include( 'b.php' );
}
public function do_some_magic()
{
    // magic stuff...
}
public static function static_func()
{
    // some code...
}
}

文件b.php:

<?php
/** @var A $this */
/** @var A self */ // This doesn't work
$this->do_some_magic();
echo '['.$this->a.']';
self::static_func();
echo '['.self::CONST1.']';

我使用PhpStorm作为IDE,在b.php文件中,如果我想转到do_some_magic()的定义或a变量的定义,它将正确地转到class.php文件中相应的方法或变量定义,但如果我想转至常量CONST1的定义或静态方法static_func()的定义,则它会说"找不到要转到的定义",所以我认为/** @var A self */不是包含文件中的有效表示法。

我的问题是:在PhpDoc中有什么方法可以告诉IDE包含的文件中self是什么类型的吗?

我搜索了一个答案,但目前看来,在包含的文件中自动完成的唯一方法是使用类名进行静态调用。当然,如果您将文件包含在不同的类中,并且您希望self表示包含该文件的特定类,那么这将失败。

所以b.php看起来像:

<?php
/** @var A $this */
/** @var A self */ // This doesn't work
$this->do_some_magic();
echo '['.$this->a.']';
A::static_func();
echo '['.A::CONST1.']';

然而,如果你找到更好的答案,请告诉我。

问候,

Andy