PhpStorm赢得';t解析包括使用常量

PhpStorm赢得';t解析包括使用常量,php,phpstorm,Php,Phpstorm,这以前是有效的,但最近停止了。我不认为我的设置有任何改变,但我已经在上面倒了几个小时,只是为了确保。我已经查遍了谷歌,也是如此。请注意细节,然后再声明“这是在这里回答的…”谢谢。) 假设和要求 假设我们有两个文件: /index.php /folder/file.php 假设我们的项目根是/home/me/project 我们希望包含index.php中的file.php。我们希望PhpStorm能够解析文件路径,并允许我们做一些漂亮的IDE事情,比如“转到声明” 什么有效 require

这以前是有效的,但最近停止了。我不认为我的设置有任何改变,但我已经在上面倒了几个小时,只是为了确保。我已经查遍了谷歌,也是如此。请注意细节,然后再声明“这是在这里回答的…”谢谢。)


假设和要求

假设我们有两个文件:

  • /index.php
  • /folder/file.php
假设我们的项目根是
/home/me/project

我们希望包含index.php中的file.php。我们希望PhpStorm能够解析文件路径,并允许我们做一些漂亮的IDE事情,比如“转到声明”

什么有效

require'folder/file.php';
需要“/home/me/project/folder/file.php”;
$root='/home/me/project/';
需要$root.'folder/file.php';
什么不再有效

define('ROOT\u DIR',“/home/me/project/”);
需要根目录'folder/file.php';
当我将鼠标移到上方时,PhpStorm确实能识别
ROOT\u DIR
的值,但它会突出显示
home
,并显示类似这样的内容:
Path'/home/me…folder/file.php'未找到

为什么要使用常量? 为了保持简单,我省略了不必要的细节来说明问题。我想解决的主要问题是为什么这曾经有效,但不再有效,和/或如何使其再次有效


对不起,我帮不了你。你到底想干什么? 以下是我遗漏的细节。如果我们不能解决主要问题,也许我们可以找到一个好的解决办法

我正在使用现有的代码库。大多数文件都需要一个
config.php
文件来定义
root\u dir()
,以获取web/project根目录。PhpStorm没有解析这些路径(可以理解),所以我创建了一个常量来代替它。无论如何,这更有意义

在今天的战斗中,我发现你可以做到:

/**@定义“根目录()”/home/me/project/“*/
//或
/**@define“ROOT_DIR”“/home/me/project/”*/

如果你把它放在文件的任何地方,那么PhpStorm就能够解析该文件中的所有包含/要求。但是,它只在该文件中工作,即使你试图在另一个文件中包含/要求它。你必须对每个文件都这样做,才能使它在任何地方都工作。不,不,不,谢谢。我需要引用项目的绝对路径/web root,PhpStorm将在整个项目中识别。

@LazyOne在评论中回答了这一问题。这是最新版本中的一个bug,正在这里跟踪它:

在修补之前,我已经创建了以下解决方法:

使用,我创建了一个热键,将
@define
注释粘贴到文件顶部,并将光标返回到其原始位置。导入并编辑文本

编辑:您可能实际上需要在常规文本编辑器中编辑文件。可能需要更改其中一个文件路径才能在您的系统上工作

注意:我正在PHPStorm中使用修改过的MacEclipse键盘布局。我不确定这是否重要


另外,请注意,您的许多“已更改”文件“只需将此映射放在文件顶部,此映射可能不适合您的队友。我只是将这些更改从我的提交中排除。

另请注意:PhpStorm最近更新。这是最新PhpStorm v2016.1.1中的一个错误。他们最近正在研究常量和/或包含改进()。。这一定是它的副作用(回归)。可能是这张票(不是100%确定,因为我不使用include/require我自己)-另一张可能的票:3年后,我找到了这个答案,因为我有同样的问题。我们有关于这个bug进展的信息吗?因为它似乎仍然存在。。。使用PhpStorm 2020.1此问题已得到解决。你能不能再发一个问题,说明你的具体情况?如果你在这里发布链接,我很乐意看一看。:)