我刚刚开始使用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'
);
答案 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并将您的相应目录添加为“包含路径”。检查将显示确定。唯一的缺点是这不是每个项目的全局设置。