配置PHPStorm以考虑包含文件的相对路径?

时间:2014-08-21 21:13:56

标签: php file include directory phpstorm

我刚刚开始使用PHPStorm而我遇到了一个问题。

因此,在包含文件时,如果您在其中包含另一个文件,则路径无法正确理解。

e.g。 文件夹结构:

root/ Contains index.php
  view/ Contains view.php
  lib/ Contains functions.php

所以如果我在index.php中包含view.php:

index.php:

    include('view/view.php');
    or
    require('view/view.php');

运行此代码时,view.php中的任何内容都包含在index.php中,因此view.php中包含的任何文件都相对于根目录。

view.php:

    include('lib/functions.php');

但是PHPStorm认为它们与视图目录相关。

view.php:

    include('../lib/functions.php');

在这种情况下,他们不是。

此问题也适用于:<a href="index.php">Link</a>

如何配置PHPStorm来应对这种情况?我以为它会自动解决这个问题,但目前还没有。

具体示例:

private/
  privatefile.php
public/
  index.php
  views/view1.php //Included in index.php
  views/view2.php //Included in index.php

如果我想在view1.php中包含privatefile.php,那么'public'会在这种情况下成为资源根吗?

所以view1.php中的include看起来像:include('../private/privatefile.php');

2 个答案:

答案 0 :(得分:10)

将文件夹标记为&#34;资源root&#34;只会帮助HTML / CSS(例如链接到images / css文件/ js文件等) - 它不会以任何方式影响实际的PHP包含。

public/index.php(您的入口点脚本 - 所有请求都将通过它)中定义一些常量,例如

define('DIR_WEB', __DIR__); // points to your public
define('DIR_APP', dirname(__DIR__)); // points to your project root

并在include / require语句中使用它们,例如

include (DIR_WEB . '/views/view1.php');
include (DIR_APP . '/private/privatefile.php');

通过这种方式,您始终可以引用相同的文件(使用绝对路径),无论该文件位于何处。


你必须记住一件事:PhpStorm只执行静态分析 - 它不能像PHP解释器那样(在运行时工作)。因此,IDE会检查与项目/模块根目录相关的include语句或使用它的实际脚本。

使用上述内容将同时满足PhpStorm和PHP本身(您将使用完整路径,因此无需搜索包含文件 - 更快一点 - 可以制作一些非常繁忙的网站上有许多包括的差异)。加上它更安全 - 因为你总是引用特定的文件,所以PHP不会错误地从其他位置加载类似命名的文件。

答案 1 :(得分:0)

转到设置 - >语言&amp;框架 - &gt; PHP并将您的相应目录添加为“包含路径”。检查将显示确定。唯一的缺点是这不是每个项目的全局设置。