Netbeans 8.2 PHP 自动完成存储在从父 class 继承的变量中的对象不起作用

Netbeans 8.2 PHP autocomplete for objects stored in variables inherited from parent class does not work

美好的一天!

我对 Netbeans PHP 8.2 X64 中的代码自动完成有疑问,运行 Windows 10。我有一个要扩展的 class:

class Controller {

    protected $obj;

    public function __construct() {
        /* @var obj DataValidator */
        $this->obj = DataValidator::instance();
    }

}

如果我在同一文件中扩展 class,自动完成适用于 $this->obj.

class BazController extends Controller{
    public function __construct() {
        parent::__construct();
    }

    public function doSomething(){
        $this->obj->doSomething() //autocomplete works!
    }
}

如果我创建一个新文件,它不起作用。 Netbeans 知道 $this->obj,但不显示方法 $this->obj.

class BarController extends Controller{

    public function __construct() {
        parent::__construct();
    }

    public function doSomething(){
        /* @var this->obj DataValidator */
        $this->obj-> // autocomplete does not work
    }

}

我真的很想使用自动完成,它大部分时间都有效,但在执行此操作时无效。也许其他人已经解决了这个问题(我找不到它?)

提前致谢。

文件开头有USE语句吗?

使用......./控制器;

也许将文档提示直接放在 class 属性 上:

/** @var \DataValidator */
protected $obj;

自己找到解决办法。您需要将以下内容添加到您的文件中才能使其正常工作:

@propery CLASS $varname

所以看起来像这样:

<?php

/**
 * Description of FooController
 *
 * @property \DataValidator $dv
 * @property \Base $f3
 * @property \SQL $db
 */

class BazController extends Controller{

    public function __construct() {
        parent::__construct();
    }

    public function doSomething(){
        /** @var $dv \DataValidator */
        $this->f3->
    }

}

那么$this->的自动补全就可以了,如下图所示: