什么时候在 PHP 代码中使用 DIRECTORY_SEPARATOR?

新手上路,请多包涵
require_once dirname(__FILE__).DIRECTORY_SEPARATOR . './../../../wp-config.php';
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'inc/options.php';

上面的代码来自 Wordpress 的一个插件。我不明白为什么其中一半使用 DIRECTORY_SEPARATOR ,而另一半使用 "/"

原文由 tanteng 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 324
2 个回答

因为在不同的操作系统中有不同的目录分隔符。在 Windows 中是 \ 在 Linux 中是 /DIRECTORY_SEPARATOR 与操作系统目录分隔符一致。每次在路径中使用它。

在您的代码片段中,我们清楚地看到了不好的做法代码。如果 framework/cms 被广泛使用,并不意味着它使用了最佳实践代码。

原文由 Justinas 发布,翻译遵循 CC BY-SA 3.0 许可协议

所有 PHP IO 函数都会在内部将斜线转换为适当的字符,因此使用哪种方法并不重要。以下是一些需要考虑的事项。

  • 当您打印出您的文件路径并且混合使用 \/ 时,它可能看起来很难看且令人困惑。如果使用 DIRECTORY_SEPARATOR ,这将永远不会发生

  • 使用诸如 $generated_css = DIRECTORY_SEPARATOR.'minified.css'; 类的东西对于文件 IO 来说可以正常工作,但是如果开发人员在 URL 中不知不觉地引用了它,例如 echo "<link rel='stylesheet' href='https:​//example.com$generated_css'>"; bug-161刚刚创建。你懂了吗?虽然这在 Windows 上有效,但对于其他人来说,正斜杠而不是反斜杠将位于 $generated_css 中,导致百分比编码,不存在,URL https://example.com %5c 生成的_css !使用 DIRECTORY_SEPARATOR 时,您必须特别注意确保您的文件路径变量永远不会在 URL 中结束。

  • 最后,在不太可能的情况下,您的文件路径被非 PHP 代码使用——例如,在 shell_exec 调用中——您将无法混合斜杠,并且需要使用 DIRECTORY_SEPARATOR 构建文件路径或使用 真实路径

原文由 hostingutilities.com 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏