PhpDoc在包含在类中的文件中为self添加表示法

我有一个类,其中包含一个文件,如下所示:

在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()的定义或变量的定义它将正确地转到class.php文件中的相应方法或变量定义,但如果我想去常量CONST1的定义或静态方法static_func()的定义,它说“找不到定义去”,所以我认为/ ** @var A self * /不是包含文件中的有效表示法.

我的问题是:在PhpDoc中是否有任何方法告诉IDE自包含文件中的类型是什么?

最佳答案 我搜索了一个答案,但由于目前似乎只有在包含文件中自动完成的方法,您将不得不使用类名进行静态调用.当然,如果您将文件包含在不同的类中并且您希望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.']';

如果您找到更好的答案,请告诉我.

问候,

安迪

点赞