我正在学习自动加载。我发现这行代码修剪和str_replace做同样的事情,摆脱反斜杠(在我的未发现)。自动载入功能中的trim和str_replace是做什么的?
但我不明白他们为什么需要这样做?
有人可以解释一下吗?
$class = 'One\Ting\ming';
strtolower(str_replace("\\", DIRECTORY_SEPARATOR, trim($class, "\\"))).".php";
我正在学习自动加载。我发现这行代码修剪和str_replace做同样的事情,摆脱反斜杠(在我的未发现)。自动载入功能中的trim和str_replace是做什么的?
但我不明白他们为什么需要这样做?
有人可以解释一下吗?
$class = 'One\Ting\ming';
strtolower(str_replace("\\", DIRECTORY_SEPARATOR, trim($class, "\\"))).".php";
trim
删除字符串开始处的反斜杠。
然后str_replace
用常量DIRECTORY_SEPARATOR
替换所有其他反斜杠。
为了说明起见,我们假设您的DIRECTORY SEPARATOR
是/
。
$class = '\One\Ting\ming'; \\ notice that I have added a leading backslash
strtolower(str_replace("\\", DIRECTORY_SEPARATOR, trim($class, "\\"))).".php";
微调领先反斜杠后,成为
strtolower(str_replace("\\", DIRECTORY_SEPARATOR, "One\Ting\ming")).".php";
然后改变\
所有出现/
,它成为
strtolower("One/Ting/ming").".php";
最后,改变字符串的所有小写字母和追加文件扩展名,它变成
"one/ting/ming.php";
'trim'只能从开始和结束中删除字符。 'str_replace'替换了字符串中的所有匹配项。 – bansi
一个通常看起来这些东西[在手册](http://php.net/docs.php) – RiggsFolly
@bansi,他们什么时候需要删除反斜杠?我不认为他们删除任何上述$类字符串。它们仍然回显相同的字符串,但在str_replace和trim发生之后小写。 –