PhpStorm 2016.x 顶级命名空间中对象的提示行为
PhpStorm 2016.x hinting behavior for objects in the top level namespace
我有一个个人 PHP 框架,我维护并在我所做的大部分工作中使用该框架。目前在主 index.php
文件中,我有以下代码可以从项目的任何地方访问核心应用程序 class:
/**
* @return App
*/
function app() {
// Returns the main App class instance.
}
它使用 PHPDoc 进行了正确注释,因此在使用时,任何 @property-read
声明或 App
的其他 public 成员都将在代码提示中可用:
在新版本发布之前,PhpStorm 总是 知道 App
的内容并提供此代码提示。但是,现在代码提示不起作用,除非您与 App
(顶级名称空间)位于同一名称空间或明确地 use App
或将所有对 app()
的调用作为 [=20] 的前缀=].
更奇怪的是,尽管代码提示在顶层之外不可用,但快速文档实用程序完全知道 app()
returns 和 App
和链接App
:
的正确定义
我尝试将 public
标记为 "Sources Root" 并更新我的 composer.json
以将 public
包含在 [=28= 的 autoload/psr4
块中] 没有变化:
"autoload": {
"psr-4" : {
"": ["public/", "app/src/"]
}
}
现阶段我不确定是否:
- 这是 PhpStorm 的一个错误,我应该向他们提出。
- 这是预期的行为,幸运的是,它以我一直努力实现的方式工作(
use App
应该 实际上存在以便检查员了解它是什么)。
- 在文件结构、命名空间使用甚至 PhpStorm 设置中有一个简单的方法可以让它像以前一样工作。
看起来该行为已在最近的版本中得到纠正(我刚刚升级到 2016.1.2 Build #PS-154.1616
)。
我有一个个人 PHP 框架,我维护并在我所做的大部分工作中使用该框架。目前在主 index.php
文件中,我有以下代码可以从项目的任何地方访问核心应用程序 class:
/**
* @return App
*/
function app() {
// Returns the main App class instance.
}
它使用 PHPDoc 进行了正确注释,因此在使用时,任何 @property-read
声明或 App
的其他 public 成员都将在代码提示中可用:
在新版本发布之前,PhpStorm 总是 知道 App
的内容并提供此代码提示。但是,现在代码提示不起作用,除非您与 App
(顶级名称空间)位于同一名称空间或明确地 use App
或将所有对 app()
的调用作为 [=20] 的前缀=].
更奇怪的是,尽管代码提示在顶层之外不可用,但快速文档实用程序完全知道 app()
returns 和 App
和链接App
:
我尝试将 public
标记为 "Sources Root" 并更新我的 composer.json
以将 public
包含在 [=28= 的 autoload/psr4
块中] 没有变化:
"autoload": {
"psr-4" : {
"": ["public/", "app/src/"]
}
}
现阶段我不确定是否:
- 这是 PhpStorm 的一个错误,我应该向他们提出。
- 这是预期的行为,幸运的是,它以我一直努力实现的方式工作(
use App
应该 实际上存在以便检查员了解它是什么)。 - 在文件结构、命名空间使用甚至 PhpStorm 设置中有一个简单的方法可以让它像以前一样工作。
看起来该行为已在最近的版本中得到纠正(我刚刚升级到 2016.1.2 Build #PS-154.1616
)。