我有一个类,其中包含如下方法中的文件:
在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
中的相应方法或变量定义{1}}文件,但如果我想定义常量CONST1或静态方法static_func()
的定义,它说'#34;找不到定义去#34;,所以我认为{{1在包含文件中不是有效的表示法。
我的问题是:在PhpDoc中是否有任何方法可以告诉IDE在包含文件中/** @var A self */
的类型是什么?
答案 0 :(得分:2)
我搜索了一个答案,但由于目前看来只有在包含文件中自动完成的方法,你必须使用类名进行静态调用。当然,如果您将文件包含在不同的类中并且您希望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.']';
如果您找到更好的答案,请告诉我。
此致
安迪