PhpStorm 2016.x提示顶级命名空间中对象的行为

时间:2016-05-18 01:06:03

标签: php phpstorm

我有一个个人的PHP框架,我维护并用于我所做的大部分工作。目前在主index.php文件中,我有以下代码,可以从项目的任何位置访问核心应用程序类:

/**
 * @return App
 */
function app() {
    // Returns the main App class instance.
}

使用PHPDoc正确注释,以便在使用时,代码提示中将提供@property-read声明或App的其他公共成员:

enter image description here

在新版本发布之前,PhpStorm 总是知道App的内容,并提供此代码提示。但是,现在代码提示不起作用,除非您与App(顶级命名空间)或显式use App位于相同的命名空间中,或者将所有调用前缀app()作为{ {1}}。

即使代码提示在顶层之外无法使用,我们还有一个奇怪的是,快速文档实用程序非常清楚\app()会返回app()并链接App的正确定义:

enter image description here

我已尝试将App标记为"来源根"并更新我的public以包含composer.json public autoload/psr4块中的""而不做任何更改:

"autoload": {
    "psr-4" : {
        "": ["public/", "app/src/"]
    }
}

在这个阶段,我不确定:

  1. 这是PhpStorm的错误,我应该跟他们一起抚养。
  2. 这是预期的行为,幸运的是它按照我试图实现的方式工作了很长时间(use App 应该实际上存在以供检查员理解它是什么)。
  3. 在文件结构,名称空间使用或甚至PhpStorm设置中都有一种简单的方法可以让它像以前一样工作。

1 个答案:

答案 0 :(得分:0)

看起来这个行为已在最近的版本中得到纠正(我刚升级到2016.1.2 Build #PS-154.1616)。