这曾经有效,但最近停止工作了。我认为我的设置没有发生任何变化,但我已经在它们上面倒了几个小时只是为了确定一下。我也检查过谷歌和SO。请先注意细节,然后再声称“这是在这里回答的......”谢谢。:)
假设和要求
假设我们有两个文件:
<project_root>/index.php<project_root>/folder/file.php假设我们的项目根目录是/home/me/project.
我们想要包含index.php 中的file.php。我们希望 PhpStorm 能够解析文件路径并允许我们执行一些漂亮的 IDE 操作,例如“转到声明”。
什么有效
require 'folder/file.php';
require '/home/me/project/folder/file.php';
$root = '/home/me/project/';
require $root.'folder/file.php';
Run Code Online (Sandbox Code Playgroud)
什么不再有效
define('ROOT_DIR', "/home/me/project/");
require ROOT_DIR.'folder/file.php';
Run Code Online (Sandbox Code Playgroud)
PhpStorm确实识别了我鼠标悬停时的值ROOT_DIR,但它突出显示home并显示如下内容:Path '"/home/me...folder/file.php' not found
为什么要使用常量? 为了简单起见,我省略了说明问题所不需要的细节。我想解决的主要问题是为什么它曾经有效但现在不再有效,和/或我怎样才能让它再次工作。
抱歉,帮不上忙。你到底想做什么? 这是我遗漏的细节。如果我们不能解决主要问题,也许我们可以找到一个好的解决办法。
我正在使用现有的代码库。大多数文件需要一个config.php定义root_dir()用于获取 Web/项目根目录的文件。PhpStorm 没有解析这些路径(这是可以理解的),所以我创建了一个常量来代替它。无论如何,这更有意义。
在今天的战斗中,我发现你可以这样做:
/** @define "root_dir()" "/home/me/project/" */
// or
/** @define "ROOT_DIR" "/home/me/project/" */
Run Code Online (Sandbox Code Playgroud)
如果您将其放在文件中的任何位置,那么 PhpStorm 就能够解析该文件中的所有包含/要求。但是,它只在该文件中有效,即使您尝试在另一个文件中包含/需要它。您必须对每个文件执行此操作才能使其在任何地方都能工作。没有。呃呃。不,谢谢。我需要以 PhpStorm 在整个项目中识别的方式引用项目/Web 根目录的绝对路径。