【问题标题】:PhpStorm won't resolve includes using constantsPhpStorm 无法解析包括使用常量
【发布时间】:2016-09-12 20:14:06
【问题描述】:

这曾经有效,但最近停止工作。我认为我的设置没有任何改变,但我已经倾注了几个小时来确定。我已经检查了整个谷歌和SO。在声称“这里已回答...”之前请注意细节。谢谢。 :)


假设和要求

假设我们有两个文件:

  • <project_root>/index.php
  • <project_root>/folder/file.php

假设我们的项目根是/home/me/project

我们想从 index.php 中包含 file.php。我们希望 PhpStorm 能够解析文件路径并允许我们执行漂亮的 IDE 操作,例如“Go To Declaration”。

什么有效

    require 'folder/file.php';

    require '/home/me/project/folder/file.php';

    $root = '/home/me/project/';
    require $root.'folder/file.php';

不再有效的方法

    define('ROOT_DIR', "/home/me/project/");
    require ROOT_DIR.'folder/file.php';

PhpStorm 确实在我将鼠标悬停时识别 ROOT_DIR 的值,但它会突出显示 home 并显示类似:Path '"/home/me...folder/file.php' not found

为什么还要使用常量? 为了简单起见,我省略了说明问题所不需要的细节。我想解决的主要问题是为什么这曾经有效但不再有效,和/或我怎样才能让它再次有效。


抱歉,帮不上忙。您真正想做什么? 这是我遗漏的细节。如果我们不能解决主要问题,也许我们可以找到一个好的解决方法。

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

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

    /** @define "root_dir()" "/home/me/project/" */
    // or
    /** @define "ROOT_DIR" "/home/me/project/" */

如果您将它放在文件中的任何位置,那么 PhpStorm 能够解析该文件中的所有包含/要求。但是,它仅适用于该文件,即使您尝试在另一个文件中包含/要求它。您必须对每个文件执行此操作才能使其在任何地方都能正常工作。没有。嗯嗯。不,谢谢。我需要以 PhpStorm 将在整个项目中识别的方式引用项目/Web 根目录的绝对路径。

【问题讨论】:

标签: php phpstorm


【解决方案1】:

@LazyOne 在 cmets 中回答了这个问题。这是最新版本中的一个错误,正在此处进行跟踪:https://youtrack.jetbrains.com/issue/WI-31754

【讨论】:

  • 3 年后,我找到了这个答案,因为我有同样的问题。我们有关于该错误进展的任何信息吗?因为它似乎仍然存在......使用 PhpStorm 2020.1
  • 这个确切的问题已得到修复。你能用你的具体细节发布另一个问题吗?如果您在此处发布链接,我将很乐意查看。 :)
【解决方案2】:

在修复之前,我已经创建了这个解决方法:

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

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

注意:我在 PHPStorm 中使用的是 Mac Eclipse 键盘布局的修改版本。我不确定这是否重要。

另外,请注意,您的许多“已更改文件”只会在文件顶部有此映射,并且此映射可能对您的队友不正确。我只是从我的提交中排除这些更改。

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多