查看PHP代码:
require_once dirname(__FILE__).DIRECTORY_SEPARATOR . './../../../wp-config.php';
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'inc/options.php';
以上代码来自wordpress的插件。
我不明白为什么有一半使用DIRECTORY_SEPARATOR,但另一半使用" /"?
答案 0 :(得分:4)
因为在不同的操作系统中有不同的目录分隔符。在Windows中,它是\
在Linux中的/
。 DIRECTORY_SEPARATOR
与该OS目录分隔符保持不变。每次在路径中使用它。
在您的代码段中,我们清楚地看到不良的练习代码。如果框架/ cms被广泛使用,并不意味着它正在使用最佳实践代码。
答案 1 :(得分:0)
不要使用自己的文件夹分隔符。始终使用DIRECTORY_SEPARATOR,因为:
不要忘记:仅在远程系统上使用常量 - 不要将它用于URI或您要发送给客户端的任何其他内容(除非您确实需要它,例如&# 34;远程浏览器")。
答案 2 :(得分:0)
所有PHP IO函数都将在内部将斜杠转换为适当的字符,因此,使用哪种方法并不重要。以下是一些要考虑的事情。
当您打印文件路径时,它看起来很丑陋且令人困惑,并且\
和/
混合在一起。如果使用DIRECTORY_SEPARATOR
,这永远不会发生
对于文件IO,使用$generated_css = DIRECTORY_SEPARATOR.'minified.css'
之类的东西可以正常工作,但如果Window用户在不知不觉中使用诸如<link rel='stylesheet' href='https://example.com/$generated_css'>
之类的URL引用它,则会创建一个错误。你懂了吗?尽管这在Windows上可以正常使用,但对于其他所有人,在$generated_css
中都会出现一个正斜杠,因此在URL中也会出现正斜杠,从而导致编码后的URL不存在百分比https://example.com%5cgenerated_css。使用DIRECTORY_SEPARATOR
时,必须格外小心,以确保您的变量从未在URL中使用。
最后,在极少数情况下,非PHP代码使用了文件路径(例如,在shell_exec调用中),您将不得不使用DIRECTORY_SEPARATOR
。