PhpDoc在类中包含的文件中为自己添加注释

Tip*_*l07 5 php phpdoc

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

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

}
Run Code Online (Sandbox Code Playgroud)

文件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.']';
Run Code Online (Sandbox Code Playgroud)

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

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

Tip*_*l07 3

我寻找答案,但目前看来,在包含的文件中自动完成的唯一方法是,您必须使用类名进行静态调用。当然,如果您将文件包含在不同的类中并且您希望 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.']';
Run Code Online (Sandbox Code Playgroud)

但是,如果您找到更好的答案,请告诉我。

问候,

安迪