遇到奇怪的问题,在 Windows 环境下,你猜 dirname(‘/’) 返回虾米?
string(1) “\”
Linux 下呢?
string(1) “/”
换个参数,dirname(‘/home/leakon/sofav.php’),如果你认为上面的不同,是因为 Windows 的目录分隔符是反斜线 “\”,那下面的结果如何解释?
Windows: string(12) “/home/leakon”
Linux: string(12) “/home/leakon”
再换参数,dirname(‘D:\Leakon\Code\sofav.php’)
Windows: string(14) “D:\Leakon\Code”
Linux: string(1) “.”
奇怪吧,为什么有这么大区别呢?
现在还不太清楚,提供一下我的测试环境:
Windows 下存在 D:\Leakon\Code\sofav.php 这个文件,Linux 下存在 /home/leakon/sofav.php。
等搞明白回来顶,看到的,用到的,留心记一下吧。
顺便说下,这个问题,是用单元测试发现的。
我知道很多开发者都懂单元测试,我也知道很多开发者并没有切身去实践单元测试。
1,”在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。 ”
2, “dirname() 被修正为 POSIX 兼容,本质上就意味着如果在 path 中没有斜线,则返回一个点(’.’),表示当前目录。”
这些似乎可以解释后面2种情况
哦,对啊,你提醒了我,研究一下 POSIX 兼容,也许能回答以上的问题,谢谢~