PhpDoc在类

时间:2015-06-29 12:42:46

标签: 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...
}

}

档案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 */的类型是什么?

1 个答案:

答案 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.']';

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

此致

安迪