这是在*nix和Windows中定义包含路径的正确方式吗?
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . '/' );
请注意我上面包含的斜杠。对于包含/需要,两个操作系统使用的是相同的斜杠吗?
编辑(已更新答案):
从我可以了解到的情况来看,下面的代码是普遍定义包含/需要路径的正确方式,适用于*nix和Windows操作系统。请在下面的评论中纠正任何错误。
让我感到困惑的是,我看到许多示例显示将反斜杠(\)替换为正斜杠(/)。根据以下一些答案,这是不必要的。
因此,最终正确的代码(对于纯粹主义者)是:
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR );
该代码生成以下结果:
*nix: /path/to/the/file/
Windows: C:\Path To\the\file\
简要说明,从内部(__FILE__
)到外部(realpath()
):
FILE 文件的完整路径和文件名。始终包含经过符号链接解析的绝对路径。
dirname() 返回的字符串是path,其中任何尾随的/组件都已删除。负责删除文件名。
realpath() 成功时返回规范化的绝对路径名。结果路径将没有符号链接、'/./'
或'/../'
组件。我假设这是为了全面性而包括在内的,因为__FILE__
已经解析了符号链接。或者也许它包括在内是为了解决相对路径?无论哪种方式,它似乎都巩固了我们的目标。