【问题标题】:PHPStorm and module referencesPHPStorm 和模块参考
【发布时间】:2012-12-19 23:23:01
【问题描述】:

我的 PHP 项目中有以下文件:

index.php
private/module1.php
private/module2.php

index.php 这样引用module1.php

require_once('private/module1.php');

轮到module1.php 需要module2.php,所以它有以下行:

require_once('private/module2.php');

我需要从 root 通知相对路径才能使其工作。我猜这是因为 require_once 命令需要一个来自 current 文档的路径,该路径恰好是 index.php。问题是 PHP Storm 无法管理这个引用。例如,它不会将字符串 private/module2.php 转换为超链接,也不会将其作为实际引用。

如何解决?

【问题讨论】:

  • 就个人而言,我总是指定相对于当前文件的路径,即 require_once dirname(__FILE__) . '/module2.php'; 。更改代码以适应 IDE 听起来可能有点倒退,但我认为拥有明确的文件引用是一种很好的做法。
  • 是的,但我看重 IDE 自动化。如果我没有得到答案,我可能会回退到这样的事情。

标签: php module directory-structure phpstorm project-structure


【解决方案1】:

您只需要通过指定 PhpStorm 应该用来解析引用的包含路径来正确配置您的 PhpStorm 项目。

转到文件 -> 设置 -> PHP。

您应该在此处将项目根目录(您的 index.php 所在的目录)添加到包含路径列表中。

完成此操作后,PhpStorm 应解析 require_once('private/module2.php') 中的路径。

此外,您可以将 private 目录添加到 PHP 通过 set_include_path() 在您 index.php 中某处使用的包含路径列表中。然后你可以从你的 module1.php 调用require_once('module2.php')

同样,您必须将 private 目录添加到 PhpStorm 使用的包含路径列表中才能解析此引用。

【讨论】:

  • 这是为所有项目配置此路径,还是只为当前项目配置此路径?我只需要为当前项目配置它。
  • @EricG 是的。为了确定是这样,您应该在设置窗口的顶部看到“对于当前项目”。
【解决方案2】:

您也可以只使用基本网址。 喜欢

require_once($base_url . 'private/module2.php');

基本 url 可以在某个地方自己定义,也可以使用 $_SERVER 变量来获取它 http://www.php.net/manual/en/reserved.variables.server.php

【讨论】:

    【解决方案3】:

    PhpStorm 无法进行引用,因为它正在寻找

    index.php
    private/module1.php
    private/private/module2.php
    

    module1.php 应该只需要文件名module2.php

    require_once('module2.php);

    【讨论】:

    • 谢谢,但您的回答中没有新内容。更改为简单的'module.php' 会破坏网站,导致消息failed to open stream: No such file or directory。你有没有注意到我的问题中的文字“需要从根目录通知相对路径才能工作”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    相关资源
    最近更新 更多